【问题标题】:Sending mail using Gmail使用 Gmail 发送邮件
【发布时间】:2011-11-24 22:30:09
【问题描述】:
public static bool SendMail(string toList, string from, string ccList, string subject, string body)
{
    MailMessage message = new MailMessage();
    SmtpClient smtpClient = new SmtpClient();

    try
    {
        MailAddress fromAddress = new MailAddress(from);
        message.From = fromAddress;
        message.To.Add(toList);
        if (ccList != null && ccList != string.Empty)
            message.CC.Add(ccList);
        message.Subject = subject;
        message.IsBodyHtml = true;
        message.Body = body;

        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtpClient.EnableSsl = true;
        smtpClient.Timeout = 30000;
        smtpClient.Host = "smtp.gmail.com";   // We use gmail as our smtp client
        smtpClient.Port = 587;
        smtpClient.UseDefaultCredentials = true;
        smtpClient.Credentials = new System.Net.NetworkCredential("myemail@gmail.com", "mypassword");


        smtpClient.Send(message);
        return true;
    }
    catch (Exception ex)
    {
        return false;
    }
}

代码看起来没问题,但还是不行,我不知道为什么? 使用 gmail 的 smtp 发送邮件的任何其他方式。

【问题讨论】:

  • 我认为你应该尝试端口 495(用于 SSL)你从哪里得到 587?

标签: c# .net windows smtp gmail


【解决方案1】:

试试

var client = new SmtpClient("smtp.gmail.com", 587)
{
  Credentials = new NetworkCredential("myusername@gmail.com", "mypwd"),
  EnableSsl = true
};

client.Send("myusername@gmail.com", "myusername@gmail.com", "test", "testbody");

如果UseDefaultCredentials 属性设置为false,则Credentials 属性中设置的值将用于连接到服务器时的凭据。在这里,您将UseDefaultCredentials 设置为true,然后它将忽略您提供的凭据。

【讨论】:

    【解决方案2】:

    请尝试使用端口 25。它对我有用。同时删除 UseDefaultCredentials 的设置。

    更新: 587 端口也为我工作。所以我认为 UseDefaultCredentials 是您代码中的唯一问题。它应该设置为 false。

    public static void SendMail(string ToMail, string FromMail, string Cc, string Body, string Subject)
    {
        SmtpClient smtp = new SmtpClient("smtp.gmail.com", 25);
        MailMessage mailmsg = new MailMessage();
    
        smtp.EnableSsl = true;
        smtp.Credentials = new NetworkCredential("email","password");
    
        mailmsg.From = new MailAddress(FromMail);
        mailmsg.To.Add(ToMail);
    
        if (Cc != "")
        {
           mailmsg.CC.Add(Cc);
        }
        mailmsg.Body = Body;
        mailmsg.Subject = Subject;
        mailmsg.IsBodyHtml = true;
    
        mailmsg.Priority = MailPriority.High;
    
        try
        {
           smtp.Timeout = 500000;
           smtp.Send(mailmsg);
           mailmsg.Dispose();
        }
        catch (Exception ex)
        {
           throw ex;
        }
    }
    

    【讨论】:

    猜你喜欢
    • 2011-02-16
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2017-11-14
    • 2018-11-14
    • 2021-06-06
    相关资源
    最近更新 更多