C#_发邮件

24 阅读1分钟

1、适合于发件人、收件人等信息全部是string类型

using System.Collections;
using System.Net;
using System.Net.Mail;
using System.Text; 

private void SendMail(string toAddress,string ccAddress,string subject,string body)
 {
     string[] arrToAddress = toAddress.Split(';');//多个收件人邮箱地址以分号隔开
     string[] arrCcAddress = ccAddress.Split(';');//多个抄送人邮箱地址以分号隔开
     
     MailMessage mailMessage = new MailMessage();//定义邮件
     SmtpClient smtpClient = new SmtpClient();//定义连接,发送邮件
     if (toAddress.Length > 0)
     {
         foreach (string item in arrToAddress)
         {
             if (!string.IsNullOrEmpty(item.Trim()))
             {
                 mailMessage.To.Add(item.Trim());//在邮件中添加收件人
             }
         }
     }
     if (ccAddress.Length > 0)
     {
         foreach (string item in arrCcAddress)
         {
             if (!string.IsNullOrEmpty(item.Trim()))
             {
                 mailMessage.To.Add(item.Trim());//在邮件中添加抄送人
             }
         }
     }
     try
     {
         mailMessage.From = new MailAddress("");//邮件发送人地址,如xxx@yyyy.com
         mailMessage.Subject = subject;//邮件主题
         mailMessage.Body = body;//邮件内容
         mailMessage.IsBodyHtml = true;//HTML格式
         mailMessage.BodyEncoding = System.Text.Encoding.UTF8;//编码UTF8
         mailMessage.Priority = MailPriority.Normal;//邮件发送的优先性为正常
         
         //smtpClient.Credentials = new NetworkCredential(emailAcount, emailPassword);
         //该语句是设置发送人邮件的账号密码,由于本次连接的服务器不需账号密码,所以不需要此语句,若连接其他服务器请用该语句
         
         smtpClient.Host = "172.20.168.106";//发送连接服务器主机IP
         smtpClient.Port = 25;//端口号
         smtpClient.UseDefaultCredentials = false;//使用默认凭据
         smtpClient.EnableSsl = false;//启动SSL,即安全发送
         smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//传递电子邮件消息,通过网络发送电子邮件到SMTP
         smtpClient.Send(mailMessage);//确认发送按钮
     }
     catch (Exception e)
     {
         throw (e);
     }
 }

2、适合于暗抄送、并且是ArrayList类型

using System.Collections;
using System.Net;
using System.Net.Mail;
using System.Text;

/// <summary>
/// 发邮件(适合暗抄送)
/// </summary>
/// <param name="To">收件人</param>
/// <param name="CC">抄送人</param>
/// <param name="BCC">暗抄送</param>
/// <param name="Subject">主题</param>
/// <param name="Body">内容</param>
/// <param name="Attach">附件</param>
/// <param name="IsHTML">是否html格式</param>
/// <param name="Msg">返回信息</param>
/// <returns>成功true(out:"Y|"),失败false(out:"N|")</returns>
public static bool SendEmail(ArrayList? To, ArrayList? CC, ArrayList? BCC, string Subject, string Body, ArrayList? Attach, bool IsHTML, out string Msg)
{
    try
    {
        Msg = "Y|";
        SmtpClient smtpClient = new()
        {
            Host = "127.0.0.1",
            DeliveryMethod = SmtpDeliveryMethod.Network,
            Credentials = new NetworkCredential("username", "password"),
        };
        MailMessage mailMessage = new()
        {
            BodyEncoding = Encoding.UTF8,
            Subject = Subject,
            Body = Body,
            IsBodyHtml = IsHTML,
            From = new MailAddress("fajianren@163.com")
        };
        if (To != null)
        {
            foreach (string item in To)
            {
                mailMessage.To.Add(item);
            }
        }

        if (CC != null)
        {
            foreach (string item2 in CC)
            {
                mailMessage.CC.Add(item2);
            }
        }

        if (BCC != null)
        {
            foreach (string item3 in BCC)
            {
                mailMessage.Bcc.Add(item3);
            }
        }

        if (Attach != null)
        {
            foreach (string Attachment in Attach)
            {
                mailMessage.Attachments.Add(new Attachment(Attachment));
            }
        }
        smtpClient.Send(mailMessage);
        mailMessage.Dispose();
        return true;
    }
    catch (Exception ex)
    {
        Msg = "N|"+ex.Message;
        return false;
    }
}