1、背景
因云虚拟主机的25端口默认封闭,需要使用SSL加密端口(通常是465端口)来对外进行发送邮件。很多cms框架的程序如果无法发信,调试需要熟悉框架发信代码,本文通过提供.NET的使用SSL加密465端口的方法和demo,用户测试虚拟主机的发信功能。
2、操作步骤
- 提前联系邮箱服务商获取使用SSL加密方式发送邮件的配置信息。
配置项 |
说明 |
发邮件服务器地址 |
输入服务器邮箱地址。例如,a***.example.com。 |
发邮件服务器端口号 |
加密端口一般是465端口。 |
邮箱用户名 |
可能是Email地址,也可能是Email地址前缀,具体可咨询邮箱服务商。 |
邮箱客户端密码 |
部分邮箱服务商Web浏览器登录界面的登录密码和客户端密码并不相同,可能需要单独设置,具体可咨询邮箱服务商。 |
- 根据如下代码demo,编写发信程序。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Mail; public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { MailMessage objMail = new MailMessage();//实例化一个邮件类objMail objMail.From = mailFrom.Text;//objMail.From表示原邮件地址 即发送人的邮箱 objMail.To = mailTo.Text;//objMail.To 表示收件人地址 即收件人邮箱 objMail.Subject = Subject.Text;//objMail.Subject 表示邮件主题 即邮件的标题 objMail.Body = Body.Text;//objMail.Body 即邮件的内容 objMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); objMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "xxxxxx@163.com"); //邮箱的用户名 objMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "xxxxxx"); //邮箱smtp服务授权码,邮件服务商提供 objMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 465); objMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true"); SmtpMail.SmtpServer ="smtp.163.com";//对应邮箱发送邮件的服务器地址,本测试以163邮箱为例 try { SmtpMail.Send(objMail);//执行发送操作 Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<scripts>alert(‘发送成功’)"); } catch (Exception ex) { Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<scripts>alert(‘发送失败’)"+ex); } } }
<%@ Page Language="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="Default2" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type"content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1"runat="server"> <div> 欢迎使用邮件发信测试文件<br /> <br /> <br /> 发件人: <asp:TextBox ID="mailFrom"runat="server"></asp:TextBox> <br /> 收件人: <asp:TextBox ID="mailTo"runat="server"></asp:TextBox> <br /> 主题: <br /> <asp:TextBox ID="Subject"runat="server"Width="421px"></asp:TextBox> <br /> 内容:<br /> <asp:TextBox ID="Body"runat="server"Height="142px"TextMode="MultiLine"Width="419px"></asp:TextBox> <br /> <asp:Button ID="Button1"runat="server"OnClick="Button1_Click"Text="发送" /> <br /> </div> </form> </body> </html>
- 把Default.aspx.cs和Default.aspx上传到虚拟主机的FTP的根目录下。访问http://虚拟主机域名/Default.aspx
- 填写测试页面的发件人、收件人、主题和内容信息,点击页面上的发信按钮,测试发信。如果发信成功,就会显示【发送成功】,如果发信失败,会有相关报错信息。
- 在收信邮箱的收件箱,检查是否收到了测试邮件,验证测试结果。