asp.net 用C#发送电子邮件

mznpcxlj  于 2022-12-05  发布在  .NET
关注(0)|答案(7)|浏览(183)

我曾尝试使用此代码发送电子邮件..但smtp.Send(mail);中发生错误消息“发送邮件失败”

MailMessage mail = new MailMessage();
  // set the addresses
  mail.From = new MailAddress("from@gmail.com");

  mail.To.Add(new MailAddress("to@yahoo.com"));

  // set the content
  mail.Subject = "test sample";
  mail.Body = @"thank you";
  SmtpClient smtp = new SmtpClient("smtp.gmail.com");

  smtp.Credentials = new NetworkCredential("from@gmail.com", "password"); 
  smtp.Send(mail);
uttx8gqw

uttx8gqw1#

在代码中指定端口号:

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587)

也可以看看这个线程Sending email through Gmail SMTP server with C#

hgqdbh6s

hgqdbh6s2#

您需要为gmail设置smtp.EnableSsl = true
看看这个类,它应该适合你:

public class Email
{
    NetworkCredential credentials;
    MailAddress sender;

    public Email(NetworkCredential credentials, MailAddress sender)
    {
        this.credentials = credentials;
        this.sender = sender;
    }

    public bool EnableSsl
    {
        get { return _EnableSsl; }
        set { _EnableSsl = value; }
    }
    bool _EnableSsl = true;

    public string Host
    {
        get { return _Host; }
        set { _Host = value; }
    }
    string _Host = "smtp.gmail.com";

    public int Port
    {
        get { return _Port; }
        set { _Port = value; }
    }
    int _Port = 587;

    public void Send(MailAddress recipient, string subject, string body, Action<MailMessage> action, params FileInfo[] attachments)
    {
        SmtpClient smtpClient = new SmtpClient();

        // setup up the host, increase the timeout to 5 minutes
        smtpClient.Host = Host;
        smtpClient.Port = Port;
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtpClient.UseDefaultCredentials = false;
        smtpClient.Credentials = credentials;
        smtpClient.Timeout = (60 * 5 * 1000);
        smtpClient.EnableSsl = EnableSsl;

        using (var message = new MailMessage(sender, recipient)
        {
            Subject = subject,
            Body = body
        })
        {
            foreach (var file in attachments)
                if (file.Exists)
                    message.Attachments.Add(new Attachment(file.FullName));
            if(null != action)
                action(message);
            smtpClient.Send(message);
        }
    }
}
qfe3c7zg

qfe3c7zg3#

填写邮件.主机和邮件.端口
具有正确值的属性

icomxhvb

icomxhvb4#

在创建新的MailMessage时,您应该使用using语句,以及一些您遗漏的内容,如端口号和enableSSL

using (MailMessage mail = new MailMessage())
{
    mail.From = new MailAddress("from@gmail.com");
    mail.To.Add(new MailAddress("to@yahoo.com"));
    mail.Subject = "test sample";
    mail.Body = @"thank you";

    SmtpClient smtpServer = new SmtpClient("smtp.gmail.com");
    smtpServer.Port = 587;
    smtpServer.Credentials = new NetworkCredential("from@gmail.com", "password"); 
    smtpServer.EnableSsl = true;
    smtpServer.Send(mail);
}
8zzbczxx

8zzbczxx5#

下面是我不久前编写的一个基本的GMAIL smtp电子邮件实现:

public static bool SendGmail(string subject, string content, string[] recipients, string from)
{
    bool success = recipients != null && recipients.Length > 0;

    if (success)
    {
        SmtpClient gmailClient = new SmtpClient
        {
            Host = "smtp.gmail.com",
            Port = 587,
            EnableSsl = true,
            UseDefaultCredentials = false,
            Credentials = new System.Net.NetworkCredential("******", "*****") //you need to add some valid gmail account credentials to authenticate with gmails SMTP server.
        };

        using (MailMessage gMessage = new MailMessage(from, recipients[0], subject, content))
        {
            for (int i = 1; i < recipients.Length; i++)
                gMessage.To.Add(recipients[i]);

            try
            {
                gmailClient.Send(gMessage);
                success = true;
            }
            catch (Exception) { success = false; }
        }
    }
    return success;
}

它应该对你来说很好,但是你需要在我在代码中标记的地方添加一个有效的gmail帐户。

raogr8fs

raogr8fs6#

这是我用来发送邮件的功能...它工作正常。
`

private static bool testsendemail(MailMessage message)
        {

            try

            {

            MailMessage message1 = new MailMessage();

            SmtpClient smtpClient = new SmtpClient();

            string msg = string.Empty;

            MailAddress fromAddress = new MailAddress("FromMail@Test.com");
            message1.From = fromAddress;
            message1.To.Add("ToMail@Test1.com");
            message1.Subject = "This is Test mail";
            message1.IsBodyHtml = true;
            message1.Body ="You can write your body here"+message;
            smtpClient.Host = "smtp.mail.yahoo.com"; // We use yahoo as our smtp client
            smtpClient.Port = 587;
            smtpClient.EnableSsl = false;
            smtpClient.UseDefaultCredentials = true;
            smtpClient.Credentials = new  System.Net.NetworkCredential("SenderMail@yahoo.com", "YourPassword");

            smtpClient.Send(message1);
        }
        catch
        {
            return false;
        }
        return true;

    }`

谢谢您的支持。

ivqmmu1c

ivqmmu1c7#

以下是Gmail服务的C#代码

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

相关问题