【问题标题】:asp.net code for gmail mail sendinggmail邮件发送的asp.net代码
【发布时间】:2017-05-23 05:48:23
【问题描述】:

通过 Gmail 发送邮件的网络代码无法正常工作,例如打开不太安全的应用程序、强大的密码、有和没有应用程序密码、有和没有两步验证。

编码:-

{
    var fromAddress = new MailAddress("doctor@gmail.com");    
    var fromPassword = "idntcare";        
    var toAddress = new MailAddress("thevarghese@gmail.com");    
    string subject = "subject";    
    string body = "body";    
    System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient
    {
         Host = "smtp.gmail.com",
         Port = 587,
         EnableSsl = true,
         DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
         UseDefaultCredentials = false,
         Credentials = new NetworkCredential(fromAddress.Address, fromPassword)

    };

    using (var message = new MailMessage(fromAddress, toAddress)
    {
         Subject = subject,
         Body = body
    })    
    smtp.Send(message);    
}

【问题讨论】:

  • “它不工作”是什么意思?问题是什么 ?你有什么例外?我还在您的代码中看到 2 个问题:您在使用代码后忘记了 ;。您不能在 using 块之外使用 message
  • using(var message .........) 一旦执行,就会被处理掉。所以,smtp.Send(message) 不能发送已处理的消息。
  • SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 Authentication Required。

标签: c# asp.net asp.net-mvc gmail mongodb-.net-driver


【解决方案1】:

尝试这样做

using (var message = new MailMessage(fromAddress, toAddress)
{
     Subject = subject,
     Body = body
     smtp.Send(message);
})    

或者试试这个

using (MailMessage mm = new MailMessage(from, emailTo))
{
    var mailAddress = new MailAddress("address", "name for id");
    mm.From = mailAddress;
    mm.Subject = title;
    mm.Body = HttpUtility.HtmlDecode(body);
    mm.IsBodyHtml = true;
    SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
    smtp.EnableSsl = true;
    NetworkCredential NetworkCred = new NetworkCredential(from, password);
    smtp.UseDefaultCredentials = false;
    smtp.Credentials = NetworkCred;
    smtp.Send(mm);
}

【讨论】:

【解决方案2】:

试试这个。

MailMessage Msg = new MailMessage();
// Sender e-mail address.
Msg.From = new MailAddress("doctor@gmail.com");
// Recipient e-mail address.
Msg.To.Add("thevarghese@gmail.com");
Msg.Subject ="subject";
Msg.Body = "body";
// your remote SMTP server IP.
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.Credentials=new System.Net.NetworkCredential("user name","password");
smtp.EnableSsl = true;
smtp.Send(Msg);

【讨论】:

  • 遇到同样的错误:SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证
  • 我不明白为什么它不适合你。按照这个链接。 stackoverflow.com/questions/20906077/…
【解决方案3】:
string fromAddress ="doctor@gmail.com";    
string fromPassword = "idntcare";        
string toAddress = "thevarghese@gmail.com"; 
using (MailMessage mm = new MailMessage(fromAddress, toAddress))
    {
        mm.Subject = subject;
        mm.Body = body;

        //attachment
        if (fuAttachment.HasFile)
        {
            string FileName = Path.GetFileName(fuAttachment.PostedFile.FileName);
            mm.Attachments.Add(new Attachment(fuAttachment.PostedFile.InputStream, FileName));
        }
        mm.IsBodyHtml = true;

        System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();

        smtp.Host = "smtp.gmail.com";
        smtp.EnableSsl = true;

        NetworkCredential NetworkCred = new NetworkCredential(email, password);
        smtp.UseDefaultCredentials = true;
        smtp.Credentials = NetworkCred;
        smtp.Port = 587;
        //smtp.Port = 25;
        smtp.Send(mm);
        ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Email sent.');", true);
    }

试试这些,你可以使用端口号 587 或 25。

【讨论】:

  • 遇到同样的错误:SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证
  • 是的,您需要更改 gmail 中用于发送的一些设置(来自地址)。
  • 查看此链接galleryserverpro.com/…
猜你喜欢
  • 2011-06-01
  • 2023-03-13
  • 2011-09-26
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 2019-07-21
相关资源
最近更新 更多