이메일을 보내기 위해 내 호스트에 의존하는 대신 내 Gmail 계정을 사용하여 이메일 메시지를 보내려했습니다. 전자 메일은 쇼에서 연주하는 밴드에 대한 전자 메일입니다. 할 수 있습니까?
반드시 사용하십시오System.Net.Mail
, 더 이상 사용되지 않는System.Web.Mail
. SSL을 사용하여System.Web.Mail
해킹 익스텐션의 총 난장판입니다.
using System.Net;
using System.Net.Mail;
var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
smtp.gmail.com
)와something@gmail.com
보낸 사람으로. Btw :smtp.gmail.com
귀하가 아닌 경우 발신자 주소를 자동으로 덮어 씁니다. - Meinersbur
위의 대답은 작동하지 않습니다. 설정해야합니다.DeliveryMethod = SmtpDeliveryMethod.Network
또는 그것은 "클라이언트가 인증되지 않았습니다."오류입니다. 또한 항상 시간 초과를 설정하는 것이 좋습니다.
수정 된 코드 :
using System.Net.Mail;
using System.Net;
var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@yahoo.com", "To Name");
const string fromPassword = "password";
const string subject = "test";
const string body = "Hey now!!";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
다른 답변은 "서버에서"먼저 작동합니다.보안 수준이 낮은 앱의 액세스 설정Gmail 계정에서.
최근에 Google이 보안 정책을 변경 한 것 같습니다. 여기에 설명 된대로 계정 설정을 변경할 때까지 최상위 등급 답변이 더 이상 작동하지 않습니다.https://support.google.com/accounts/answer/6010255?hl=en-GB
2016 년 3 월 현재 Google에서 설정 위치를 다시 변경했습니다.
이것은 첨부 파일과 함께 이메일을 보내는 것입니다 .. 간단하고 짧은 ..
출처:http://coding-issues.blogspot.in/2012/11/sending-email-with-attachments-from-c.html
using System.Net;
using System.Net.Mail;
public void email_send()
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("your mail@gmail.com");
mail.To.Add("to_mail@gmail.com");
mail.Subject = "Test Mail - 1";
mail.Body = "mail with attachment";
System.Net.Mail.Attachment attachment;
attachment = new System.Net.Mail.Attachment("c:/textfile.txt");
mail.Attachments.Add(attachment);
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("your mail@gmail.com", "your password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
}
Google은 최신 보안 표준을 사용하지 않는 일부 앱이나 기기의 로그인 시도를 차단할 수 있습니다. 이러한 앱과 기기는 침입하기가 더 쉽기 때문에 계정을 차단하면 계정을 더 안전하게 유지하는 데 도움이됩니다.
최신 보안 표준을 지원하지 않는 앱의 예는 다음과 같습니다.
따라서덜 안전한 로그인귀하의 Google 계정에.
Google 계정에 로그인 한 후 다음으로 이동하십시오.
https://myaccount.google.com/lesssecureapps
또는
https://www.google.com/settings/security/lesssecureapps
C #에서는 다음 코드를 사용할 수 있습니다.
using (MailMessage mail = new MailMessage())
{
mail.From = new MailAddress("email@gmail.com");
mail.To.Add("somebody@domain.com");
mail.Subject = "Hello World";
mail.Body = "<h1>Hello</h1>";
mail.IsBodyHtml = true;
mail.Attachments.Add(new Attachment("C:\\file.zip"));
using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
{
smtp.Credentials = new NetworkCredential("email@gmail.com", "password");
smtp.EnableSsl = true;
smtp.Send(mail);
}
}
여기 내 버전이 있습니다 : "Gmail을 사용하여 C #으로 이메일 보내기".
using System;
using System.Net;
using System.Net.Mail;
namespace SendMailViaGmail
{
class Program
{
static void Main(string[] args)
{
//Specify senders gmail address
string SendersAddress = "Sendersaddress@gmail.com";
//Specify The Address You want to sent Email To(can be any valid email address)
string ReceiversAddress = "ReceiversAddress@yahoo.com";
//Specify The password of gmial account u are using to sent mail(pw of sender@gmail.com)
const string SendersPassword = "Password";
//Write the subject of ur mail
const string subject = "Testing";
//Write the contents of your mail
const string body = "Hi This Is my Mail From Gmail";
try
{
//we will use Smtp client which allows us to send email using SMTP Protocol
//i have specified the properties of SmtpClient smtp within{}
//gmails smtp server name is smtp.gmail.com and port number is 587
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(SendersAddress, SendersPassword),
Timeout = 3000
};
//MailMessage represents a mail message
//it is 4 parameters(From,TO,subject,body)
MailMessage message = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
/*WE use smtp sever we specified above to send the message(MailMessage message)*/
smtp.Send(message);
Console.WriteLine("Message Sent Successfully");
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadKey();
}
}
}
}
나를 작동 시키려면 Gmail 계정을 활성화해야 다른 앱이 액세스 할 수있게되었습니다. 이것은 "보안 수준이 낮은 앱 사용"및또한이 링크를 사용 :https://accounts.google.com/b/0/DisplayUnlockCaptcha
나는이 코드가 잘 작동하기를 바랍니다. 시도해 볼 수 있습니다.
// Include this.
using System.Net.Mail;
string fromAddress = "xyz@gmail.com";
string mailPassword = "*****"; // Mail id password from where mail will be sent.
string messageBody = "Write the body of the message here.";
// Create smtp connection.
SmtpClient client = new SmtpClient();
client.Port = 587;//outgoing port for the mail.
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(fromAddress, mailPassword);
// Fill the mail form.
var send_mail = new MailMessage();
send_mail.IsBodyHtml = true;
//address from where mail will be sent.
send_mail.From = new MailAddress("from@gmail.com");
//address to which mail will be sent.
send_mail.To.Add(new MailAddress("to@example.com");
//subject of the mail.
send_mail.Subject = "put any subject here";
send_mail.Body = messageBody;
client.Send(send_mail);
이것을 포함 시키십시오,
using System.Net.Mail;
그리고,
MailMessage sendmsg = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
SmtpClient client = new SmtpClient("smtp.gmail.com");
client.Port = Convert.ToInt16("587");
client.Credentials = new System.Net.NetworkCredential("mail-id@gmail.com","password");
client.EnableSsl = true;
client.Send(sendmsg);
아래는 C #을 사용하여 메일을 보내기위한 샘플 작업 코드입니다. 아래 예에서는 google의 smtp 서버를 사용하고 있습니다.
코드는 자명하지만 이메일과 비밀번호를 이메일과 비밀번호 값으로 바꿉니다.
public void SendEmail(string address, string subject, string message)
{
string email = "yrshaikh.mail@gmail.com";
string password = "put-your-GMAIL-password-here";
var loginInfo = new NetworkCredential(email, password);
var msg = new MailMessage();
var smtpClient = new SmtpClient("smtp.gmail.com", 587);
msg.From = new MailAddress(email);
msg.To.Add(new MailAddress(address));
msg.Subject = subject;
msg.Body = message;
msg.IsBodyHtml = true;
smtpClient.EnableSsl = true;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = loginInfo;
smtpClient.Send(msg);
}
배경 이메일을 보내려면 다음을 수행하십시오.
public void SendEmail(string address, string subject, string message)
{
Thread threadSendMails;
threadSendMails = new Thread(delegate()
{
//Place your Code here
});
threadSendMails.IsBackground = true;
threadSendMails.Start();
}
네임 스페이스 추가
using System.Threading;
이쪽으로 사용하다
MailMessage sendmsg = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
SmtpClient client = new SmtpClient("smtp.gmail.com");
client.Port = Convert.ToInt32("587");
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential("mail-id@gmail.com","MyPassWord");
client.Send(sendmsg);
이것을 잊지 마십시오.
using System.Net;
using System.Net.Mail;
하나의 팁! 보낸 사람의받은 편지함을 확인하십시오. 보안이 취약한 응용 프로그램을 허용해야 할 수도 있습니다. 만나다:https://www.google.com/settings/security/lesssecureapps
이 시도,
private void button1_Click(object sender, EventArgs e)
{
try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("your_email_address@gmail.com");
mail.To.Add("to_address");
mail.Subject = "Test Mail";
mail.Body = "This is for testing SMTP mail from GMAIL";
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("username", "password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
MessageBox.Show("mail Send");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Gmail / Outlook.com 이메일에서 보낸 사람 변경 :
스푸핑을 방지하기 위해 - Gmail / Outlook.com에서는 임의의 사용자 계정 이름을 보낼 수 없습니다.
제한된 수의 발신자가있는 경우이 안내를 따르고From
이 주소로다른 주소에서 메일 보내기
사용자가 전자 메일을 입력하는 웹 사이트의 피드백 양식과 같은 임의의 전자 메일 주소에서 보내기를 원할 경우 수행 할 수있는 최선책에 대해 전자 메일로 보내지 않으려는 경우 다음과 같이하십시오.
msg.ReplyToList.Add(new System.Net.Mail.MailAddress(email, friendlyName));
이렇게하면 귀하의 이메일 계정에서 '답장'을 보내 귀하의 밴드 팬에게 피드백 페이지에 답장 할 수는 있지만 실제 이메일을받지 못하면 스팸 톤이 발생할 수 있습니다.
제어 된 환경에있는 경우이 방법은 훌륭하게 작동하지만 일부 전자 메일 클라이언트가 회신 요청이 지정된 경우에도 보낸 사람 주소로 보내는 것을 보았습니다 (어떤 것인지 모르겠습니다).
나는 동일한 문제가 있었지만 Gmail의 보안 설정으로 이동하여 해결되었습니다.덜 안전한 응용 프로그램 허용. Domenic & Donny는 작동하지만 설정을 사용하도록 설정 한 경우에만 작동합니다.
로그인 한 사용자 (Google에 있음)를 팔로우 할 수 있습니다.이링크 및 토글"켜다"...에 대한"덜 안전한 앱을위한 액세스"
using System;
using System.Net;
using System.Net.Mail;
namespace SendMailViaGmail
{
class Program
{
static void Main(string[] args)
{
//Specify senders gmail address
string SendersAddress = "Sendersaddress@gmail.com";
//Specify The Address You want to sent Email To(can be any valid email address)
string ReceiversAddress = "ReceiversAddress@yahoo.com";
//Specify The password of gmial account u are using to sent mail(pw of sender@gmail.com)
const string SendersPassword = "Password";
//Write the subject of ur mail
const string subject = "Testing";
//Write the contents of your mail
const string body = "Hi This Is my Mail From Gmail";
try
{
//we will use Smtp client which allows us to send email using SMTP Protocol
//i have specified the properties of SmtpClient smtp within{}
//gmails smtp server name is smtp.gmail.com and port number is 587
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(SendersAddress, SendersPassword),
Timeout = 3000
};
//MailMessage represents a mail message
//it is 4 parameters(From,TO,subject,body)
MailMessage message = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
/*WE use smtp sever we specified above to send the message(MailMessage message)*/
smtp.Send(message);
Console.WriteLine("Message Sent Successfully");
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadKey();
}
}
}
}
다음은 메일을 보내고 web.config에서 자격 증명을받는 방법 중 하나입니다.
public static string SendEmail(string To, string Subject, string Msg, bool bodyHtml = false, bool test = false, Stream AttachmentStream = null, string AttachmentType = null, string AttachmentFileName = null)
{
try
{
System.Net.Mail.MailMessage newMsg = new System.Net.Mail.MailMessage(System.Configuration.ConfigurationManager.AppSettings["mailCfg"], To, Subject, Msg);
newMsg.BodyEncoding = System.Text.Encoding.UTF8;
newMsg.HeadersEncoding = System.Text.Encoding.UTF8;
newMsg.SubjectEncoding = System.Text.Encoding.UTF8;
System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
if (AttachmentStream != null && AttachmentType != null && AttachmentFileName != null)
{
System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment(AttachmentStream, AttachmentFileName);
System.Net.Mime.ContentDisposition disposition = attachment.ContentDisposition;
disposition.FileName = AttachmentFileName;
disposition.DispositionType = System.Net.Mime.DispositionTypeNames.Attachment;
newMsg.Attachments.Add(attachment);
}
if (test)
{
smtpClient.PickupDirectoryLocation = "C:\\TestEmail";
smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory;
}
else
{
//smtpClient.EnableSsl = true;
}
newMsg.IsBodyHtml = bodyHtml;
smtpClient.Send(newMsg);
return SENT_OK;
}
catch (Exception ex)
{
return "Error: " + ex.Message
+ "<br/><br/>Inner Exception: "
+ ex.InnerException;
}
}
그리고 web.config의 해당 섹션 :
<appSettings>
<add key="mailCfg" value="yourmail@example.com"/>
</appSettings>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="yourmail@example.com">
<network defaultCredentials="false" host="mail.exapmple.com" userName="yourmail@example.com" password="your_password" port="25"/>
</smtp>
</mailSettings>
</system.net>
내 문제는 내비밀 번호는 블랙 슬래시 "\"그 안에는 문제가 발생할 것이라는 것을 깨닫지 못하고 붙여 넣기 한 것입니다.
이거 한번 해봐
public static bool Send(string receiverEmail, string ReceiverName, string subject, string body)
{
MailMessage mailMessage = new MailMessage();
MailAddress mailAddress = new MailAddress("abc@gmail.com", "Sender Name"); // abc@gmail.com = input Sender Email Address
mailMessage.From = mailAddress;
mailAddress = new MailAddress(receiverEmail, ReceiverName);
mailMessage.To.Add(mailAddress);
mailMessage.Subject = subject;
mailMessage.Body = body;
mailMessage.IsBodyHtml = true;
SmtpClient mailSender = new SmtpClient("smtp.gmail.com", 587)
{
EnableSsl = true,
UseDefaultCredentials = false,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential("abc@gmail.com", "pass") // abc@gmail.com = input sender email address
//pass = sender email password
};
try
{
mailSender.Send(mailMessage);
return true;
}
catch (SmtpFailedRecipientException ex)
{ }
catch (SmtpException ex)
{ }
finally
{
mailSender = null;
mailMessage.Dispose();
}
return false;
}
에서 복사 중또 다른 대답, 위의 방법은 작동하지만 gmail은 항상 "보낸 사람"및 "회신 할 사람"전자 메일을 실제 보내는 gmail 계정으로 바꿉니다. 외관상으로는 그러나 일은 주변에있다 :
http://karmic-development.blogspot.in/2013/10/send-email-from-aspnet-using-gmail-as.html
"3. 계정 탭에서"다른 이메일 주소 추가 "링크를 클릭 한 다음"
또는 가능하다.이
업데이트 3 : 독자 Derek Bennett은 "gmail 설정 : 계정으로 이동하여 gmail 계정 이외의 계정으로"기본 설정 "을 설정하면 gmail이 기본 계정의 이메일과 상관없이 보낸 사람 필드를 다시 쓸 수 있습니다. 주소가. "