Отправка почты с помощью Gmail - PullRequest
0 голосов
/ 26 сентября 2011
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;
    }
}

Код кажется нормальным, но все еще не работает, я не могу понять, почему?любой другой способ использовать SMTP для отправки почты.

Ответы [ 2 ]

4 голосов
/ 26 сентября 2011

try

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, тогда он будет игнорировать предоставленные вами учетные данные.

3 голосов
/ 26 сентября 2011

Пожалуйста, попробуйте с портом 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...