Microsoft.SharePoint.Utilities提供了发送邮件的简单方法,即SPUtility.SendEmail,这个方法会用在Sharepoint管理中心设置的传出电子邮件设置的SMTP服务器来匿名发送邮件。代码如下:
SPUtility.SendEmail(SPContext.Current.Web, false, false, "[收件人Email地址]", "test eamil", "Hi, This is a test.");
这个方法有一些局限性:
1.必须要求SMTP服务器允许匿名发送邮件;
2.不能自定义发件人显示名称,收到的邮件发件人只显示Email地址;
为了解决上述两个问题,我们还可以用System.Net.Mail(.NET 2.0)提供的方法发送邮件。代码如下:
SmtpClient client = new SmtpClient("[SMTP服务器域名或IP地址]");
MailMessage mail = new MailMessage("[发件人Email地址]","[收件人Email地址]");
mail.From = new MailAddress("[发件人Email地址]","[自定义的发件人显示名称]");//加上自定义的发件人显示名称
mail.Subject = "Test SmtpClient";
mail.Body = "This message is for testing.";
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("[登录名]","[密码]");//如果是匿名发送则不需要这一句
client.Send(mail);
另外,大家可以看一下SharePoint系统发送的通知邮件,发件人的显示为:网站标题[传出电子邮件发件人地址],所以我想它不是用SPUtility.SendEmail发送的,应该是用System.Net.Mail发送的。
如果你的SMTP服务器是Exchange Server,你会发现,经过SMTP验证后的邮件发件人显示为Exchange系统(AD)中定义的显示名称。
还有一种方法,需要在Exchange中配置接收连接器,无论用上述哪种方法发送邮件,都可以将发件人显示为Exchange系统中定义的显示名称。具体方法参见Lambert Qin的文章
SharePoint 通知(Alerts)邮件的发件人显示名问题