programing

Gmail을 통해 .NET으로 이메일 보내기

newsource 2023. 5. 20. 10:50

Gmail을 통해 .NET으로 이메일 보내기

저는 호스트에게 이메일을 보내는 대신 Gmail 계정을 사용하여 이메일 메시지를 보낼 생각이었습니다.그 이메일들은 제가 방송에서 연주하는 밴드들에게 보내는 개인화된 이메일들입니다.

가능합니까?

반드시 사용하십시오.System.Net.Mail되지 않는 비위적이 .System.Web.Mail을 사용하여 수행 »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);
}

추가로 Google 계정 > 보안 페이지로 이동하여 Google 로그인 > 2단계 검증 설정을 확인합니다.

  • 활성화된 경우 .NET에서 2단계 검증을 생략할 수 있도록 암호를 생성해야 합니다.이를 위해 Google 로그인 > App 비밀번호를 클릭하고 app = Mail, 단말기 = Windows Computer를 선택한 후 비밀번호를 생성합니다.에서 생성된 암호 사용fromPassword표준 Gmail 암호 대신 상수를 입력합니다.
  • 비활성화된 경우에는 보안이 덜한 앱 액세스를 설정해야 합니다. 이는 권장되지 않습니다!따라서 2단계 검증을 활성화하는 것이 좋습니다.

위의 답변은 효과가 없습니다.은 야해합니다설을 설정해야 .DeliveryMethod = SmtpDeliveryMethod.Network그렇지 않으면 "client was not authenticated" 오류가 표시됩니다.또한 시간 제한을 두는 것이 항상 좋습니다.

수정된 코드:

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);
}

2022 편집 2022년 5월 30일부터 Google은 사용자 이름과 암호만 사용하여 Google 계정에 로그인하도록 요청하는 타사 앱 또는 장치의 사용을 더 이상 지원하지 않습니다.하지만 당신은 여전히 당신의 gmail 계정을 통해 이메일을 보낼 수 있습니다.

  1. https://myaccount.google.com/security 으로 이동하여 2단계 확인 기능을 켭니다.필요한 경우 전화로 계정을 확인합니다.
  2. "2단계 확인" 체크 표시 바로 아래에 있는 "앱 암호"를 클릭합니다.
  3. 메일 앱에 대한 새 암호를 요청합니다.여기에 이미지 설명 입력

이제 계정에 원래 암호 대신 이 암호를 사용하십시오!

public static void SendMail2Step(string SMTPServer, int SMTP_Port, string From, string Password, string To, string Subject, string Body, string[] FileNames) {            
            var smtpClient = new SmtpClient(SMTPServer, SMTP_Port) {
                DeliveryMethod = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                EnableSsl = true
            };                
            smtpClient.Credentials = new NetworkCredential(From, Password); //Use the new password, generated from google!
            var message = new System.Net.Mail.MailMessage(new System.Net.Mail.MailAddress(From, "SendMail2Step"), new System.Net.Mail.MailAddress(To, To));
            smtpClient.Send(message);
    }

다음과 같이 사용:

SendMail2Step("smtp.gmail.com", 587, "youraccount@gmail.com",
          "yjkjcipfdfkytgqv",//This will be generated by google, copy it here.
          "recipient@barcodes.bg", "test message subject", "Test message body ...", null);

"서버에서" 작동하는 다른 응답의 경우 먼저 Gmail 계정에서 보안이 덜한 앱에 대한 액세스를 설정합니다.2022년 5월 30일에는 더 이상 사용되지 않습니다.

최근 구글이 보안 정책을 바꾼 것 같습니다.여기에 설명된 대로 계정 설정을 변경할 때까지 최고 등급의 답변은 더 이상 작동하지 않습니다. https://support.google.com/accounts/answer/6010255?hl=en-GB 2016년 3월 기준으로 구글은 설정 위치를 다시 변경했습니다!여기에 이미지 설명 입력

첨부파일로 이메일을 보냅니다.단순하고 짧은..

출처: 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은 최신 보안 표준을 사용하지 않는 일부 앱 또는 장치의 로그인 시도를 차단할 수 있습니다.이러한 앱과 장치는 침입하기 쉬우므로 이를 차단하면 계정을 더 안전하게 유지할 수 있습니다.

최신 보안 표준을 지원하지 않는 앱의 예는 다음과 같습니다.

  • 6 앱 또는 iPad 이하 iPad iPhone iPad Mail
  • 8.1 이전 의 Mail 8.1보다 이전 버전입니다.
  • Microsoft Outlook 및 Mozilla Thunderbird와 같은 일부 데스크탑 메일 클라이언트

따라서 Google 계정에서 보안 로그인을 덜 사용하도록 설정해야 합니다.

Google 계정에 로그인한 후 다음으로 이동합니다.

https://myaccount.google.com/://myaccount.google.com/lesssecureapps
또는
https://www.google.com/settings/security/://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);
    }
}

제가 그것을 작동시키기 위해서, 저는 다른 앱들이 접근할 수 있도록 제 지메일 계정을 활성화해야 했습니다.이는 "보안이 덜한 앱 사용" 및 다음 링크를 사용하여 수행됩니다. https://accounts.google.com/b/0/DisplayUnlockCaptcha

여기 제 버전이 있습니다: "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();
     }
    }
   }
 }

나는 이 코드가 잘 작동하기를 바랍니다.한 번 해보세요.

// 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);

출처 : ASP.NEC#로 이메일 보내기

아래는 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);
}

Gmail의 보안 문제를 피하기 위해서는 Gmail 설정에서 앱 비밀번호를 먼저 생성해야 하며, 2단계 인증을 사용하더라도 실제 비밀번호 대신 이 비밀번호를 사용하여 이메일을 보낼 수 있습니다.

이것을 포함하면,

using System.Net.Mail;

그리고 나서.

MailMessage sendmsg = new MailMessage(SendersAddress, ReceiversAddress, subject, body); 
SmtpClient client = new SmtpClient("smtp.gmail.com");

client.Port = 587;
client.Credentials = new System.Net.NetworkCredential("mail-id@gmail.com","password");
client.EnableSsl = true;

client.Send(sendmsg);

만약 당신이 배경 이메일을 보내고 싶다면, 아래와 같이 하십시오.

 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;

사용해 보십시오.

    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());
        }
    }

이런 식으로 사용합니다.

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;

2022년 6월 1일부터 Google은 일부 보안 기능을 추가했습니다.

Google은 더 이상 사용자 이름과 암호만 사용하여 Google 계정에 로그인하거나 Google 계정의 사용자 이름과 암호를 사용하여 직접 메일을 보내는 타사 앱 또는 장치의 사용을 지원하지 않습니다.그러나 앱 암호 생성을 사용하여 Gmail 계정으로 이메일을 보낼 수 있습니다.

다음은 새 암호를 생성하는 단계입니다.

  1. https://myaccount.google.com/security 으로 이동합니다.
  2. 2단계 확인을 켭니다.
  3. 필요한 경우 전화로 계정을 확인합니다.
  4. "2단계 확인" 체크 표시 바로 아래에 있는 "앱 암호"를 클릭합니다.메일 앱에 대한 새 암호를 요청합니다.

이제 우리는 당신의 계정의 원래 비밀번호 대신에 이 비밀번호를 사용하여 메일을 보내야 합니다.

아래는 메일을 보내기 위한 예제 코드입니다.

public static void SendMailFromApp(string SMTPServer, int SMTP_Port, string From, string Password, string To, string Subject, string Body) {            
            var smtpClient = new SmtpClient(SMTPServer, SMTP_Port) {
                DeliveryMethod = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                EnableSsl = true
            };                
            smtpClient.Credentials = new NetworkCredential(From, Password); //Use the new password, generated from google!
            var message = new System.Net.Mail.MailMessage(new System.Net.Mail.MailAddress(From, "SendMail2Step"), new System.Net.Mail.MailAddress(To, To));
            smtpClient.Send(message);
    }

당신은 아래와 같이 메소드를 호출할 수 있습니다.

SendMailFromApp("smtp.gmail.com", 25, "mygmailaccount@gmail.com",
          "tyugyyj1556jhghg",//This will be generated by google, copy it here.
          "mailme@gmail.com", "New Mail Subject", "Body of mail from My App");

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();
     }
}
}
}

여기에 이미지 설명 입력

Google은 Google 계정에서 보안 수준이 낮은 앱 설정을 제거했습니다. 즉, 더 이상 실제 Google 암호를 사용하여 SMTP 서버에서 전자 메일을 보낼 수 없습니다.Xoauth2를 사용하여 사용자에게 권한을 부여하거나 2fa가 활성화된 계정에 앱 암호를 만들어야 합니다.

앱이 생성되면 표준 gmail 암호 대신 앱 암호를 사용할 수 있습니다.

class Program
{
    private const string To = "test@test.com";
    private const string From = "test@test.com";
    
    private const string GoogleAppPassword = "XXXXXXXX";
    
    private const string Subject = "Test email";
    private const string Body = "<h1>Hello</h1>";
    
    
    static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");
        
        var smtpClient = new SmtpClient("smtp.gmail.com")
        {
            Port = 587,
            Credentials = new NetworkCredential(From , GoogleAppPassword),
            EnableSsl = true,
        };
        var mailMessage = new MailMessage
        {
            From = new MailAddress(From),
            Subject = Subject,
            Body = Body,
            IsBodyHtml = true,
        };
        mailMessage.To.Add(To);

        smtpClient.Send(mailMessage);
    }
}

SMTP 사용자 이름 및 암호에 대한 빠른 수정이 수락되지 않음 오류

Google 업데이트 후 c# 또는 .net을 사용하여 전자 메일을 보내는 올바른 방법입니다.

using System;
using System.Net;
using System.Net.Mail;

namespace EmailApp
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            String SendMailFrom = "Sender Email";
            String SendMailTo = "Reciever Email";
            String SendMailSubject = "Email Subject";
            String SendMailBody = "Email Body";

            try
            {
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com",587);
                SmtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
                MailMessage email = new MailMessage();
                // START
                email.From = new MailAddress(SendMailFrom);
                email.To.Add(SendMailTo);
                email.CC.Add(SendMailFrom);
                email.Subject = SendMailSubject;
                email.Body = SendMailBody;
                //END
                SmtpServer.Timeout = 5000;
                SmtpServer.EnableSsl = true;
                SmtpServer.UseDefaultCredentials = false;
                SmtpServer.Credentials = new NetworkCredential(SendMailFrom, "Google App Password");
                SmtpServer.Send(email);

                Console.WriteLine("Email Successfully Sent");
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Console.ReadKey();
            }

        }
    }
}

앱 암호를 만들려면 다음 문서를 참조하십시오. https://www.techaeblogs.live/2022/06/How to send-email-using-gmail.html

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)
        { 
          // Write the exception to a Log file.
        }
        catch (SmtpException ex)
        { 
           // Write the exception to a Log file.
        }
        finally
        {
            mailSender = null;
            mailMessage.Dispose();
        }
        return false;
}

시도해 보세요Mailkit그것은 메일을 보내기 위한 더 나은 고급 기능을 제공합니다.자세한 내용은 다음을 참조하십시오.

    MimeMessage message = new MimeMessage();
    message.From.Add(new MailboxAddress("FromName", "YOU_FROM_ADDRESS@gmail.com"));
    message.To.Add(new MailboxAddress("ToName", "YOU_TO_ADDRESS@gmail.com"));
    message.Subject = "MyEmailSubject";

    message.Body = new TextPart("plain")
    {
        Text = @"MyEmailBodyOnlyTextPart"
    };

    using (var client = new SmtpClient())
    {
        client.Connect("SERVER", 25); // 25 is port you can change accordingly

        // Note: since we don't have an OAuth2 token, disable
        // the XOAUTH2 authentication mechanism.
        client.AuthenticationMechanisms.Remove("XOAUTH2");

        // Note: only needed if the SMTP server requires authentication
        client.Authenticate("YOUR_USER_NAME", "YOUR_PASSWORD");

        client.Send(message);
        client.Disconnect(true);
    }

다른 답변에서 복사하면 위의 방법은 작동하지만 gmail은 항상 "발신인" 및 "답장인" 이메일을 실제 보내는 gmail 계정으로 대체합니다. 그러나 다음과 관련된 작업이 있는 것으로 보입니다.

http://karmic-development.blogspot.in/2013/10/send-email-from-aspnet-using-gmail-as.html

"3. 계정 탭에서 "소유한 다른 이메일 주소 추가" 링크를 클릭한 후 확인합니다.

아니면 아마도 이것.

업데이트 3: 독자 Derek Bennett은 "해결책은 Gmail Settings:계정 및 "기본값으로 만들기"는 gmail 계정이 아닌 다른 계정입니다.이렇게 하면 gmail은 기본 계정의 전자 메일 주소가 무엇이든 보낸 사람 필드를 다시 쓰게 됩니다."

지금 이 작업을 수행하려는 경우에는 더 이상 지원되지 않습니다.

https://support.google.com/accounts/answer/6010255?hl=en&visit_id=637960864118404117-800836189&p=less-secure-apps&rd=1#zippy=

여기에 이미지 설명 입력

gmail 앱별 비밀번호 설정 방법

Google 암호가 작동하지 않는 경우 Google에서 Gmail용 앱별 암호를 만들어야 할 수 있습니다.https://support.google.com/accounts/answer/185833?hl=en

언급URL : https://stackoverflow.com/questions/32260/sending-email-in-net-through-gmail