利用SMTP发送邮件(C#)

近期有个项目需要把软件的错误信息以邮件形式发给指定管理员邮箱,过程中遇到了一些小问题可以记录下来以供参考。

首先是代码: 

private void SendEmail(Email f)
        {
            try
            {
                if (mSmtpIPAddress.Length > 0 && !string.IsNullOrEmpty(f.ToAddress))
                {
                    SmtpClient client = new SmtpClient(mSmtpIPAddress);
                    client.Port = mSmtpPort;
                    client.EnableSsl = mSsl;
                    MailMessage mMessage = new MailMessage(f.FromAddress, f.ToAddress, f.Subject, f.Body);

                    if (f.CC != null && f.CC.Length > 0)
                    {
                        try
                        {
                            MailAddress cc = new MailAddress(f.CC);
                            mMessage.CC.Add(cc);
                        }
                        catch { }
                    }

                    if (f.BCC != null && f.BCC.Length > 0)
                    {
                        try
                        {
                            MailAddress bcc = new MailAddress(f.BCC);
                            mMessage.Bcc.Add(bcc);
                        }
                        catch { }
                    }

                    if (f.AttachmentPath.Length > 0)
                    {
                        Attachment mAttachment = new Attachment(f.AttachmentPath);
                        mMessage.Attachments.Add(mAttachment);
                    }

                    if (mAuthentication)
                    {
                        // Add authenication
                        NetworkCredential cred = new NetworkCredential(mUserName, mPassword);
                        client.UseDefaultCredentials = false;
                        client.Credentials = cred;
                    }
                    
                    client.Send(mMessage);

                }
            }
            catch (Exception err)
            {
                LogError("SendEmail", err);
            }
        }

 

通过SMTP发送邮件,要通过SmtpClient类,该类的几个重要属性如下:

  • Host:get/set Smtp服务器地址,可以通过构造函数指定;
  • Port:get/set Smtp服务器通信的端口号,可通过构造函数指定;
  • EnableSsl:get/set 与Smtp服务器之间的通信是否需要加密,若false,则与Smtp的所有通信都通过明文进行;
  • Credentials: ICredentialsByHost类型,get/set SmtpClient的认证,用于连接Smtp服务器发送邮件时需要的用户名、密码信息;

其中Credentials属性通过NetworkCredential类进行设定,而要发送的邮件通过MailMessage进行封装。

当EnableSsl被设置成为True时,若Smtp服务器不支持加密通信,则会产生“服务器不支持安全连接”的异常

若用户名密码不正确时,则会产生"邮箱不可用。服务器响应为: 5.7.1 Unable to relay"的异常信息。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值