无锡工程建设招标网站,建e网效果图怎么下载,国外设计师个人网站,网站建站代理加盟最近使用.net的System.Web.Mail发送邮件在服务器上失败,经过多次尝试,终于解决了这个问题:
一般System.Web.Mail是.net自带的发送邮件的库.但发现失败的原因有几种,贴出来给大家参考一下:
% Page LanguageC# % script languageC# runat% Page LanguageC# % script languageC# runatserver
void Page_Load() { // 使用一个SMTP的服务器并且通过验证 System.Web.Mail.MailMessage myEmail new System.Web.Mail.MailMessage(); myEmail.From username126.com; myEmail.To aimeyou.com; myEmail.Subject 测试; myEmail.BodyFormat System.Web.Mail.MailFormat.Text; myEmail.Body 看到了么; // 通过SMTP服务器验证 myEmail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/smtpauthenticate, 1); myEmail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/sendusername, username); myEmail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/sendpassword, userpassword); System.Web.Mail.SmtpMail.SmtpServer smtp.126.com; System.Web.Mail.SmtpMail.Send(myEmail); lblMailStatus.Text Mail successfully sent.; }
/script
html body
asp:Label idlblMailStatus runatserver /
/body /html
这个是常见的发送方式,
案例一:见到网上有些资料缺少 // 通过SMTP服务器验证 myEmail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/smtpauthenticate, 1); myEmail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/sendusername, username); myEmail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/sendpassword, userpassword);
这一部分,是失败原因其中之一.有些邮件服务器(smtp)需要用户验证.
附CdoConfiguration相关属性参考:(转自:http://dev.csdn.net/article/78/78245.shtm)public abstract class CdoConfiguration{ // Fields [MarshalAs(UnmanagedType.BStr)] public const string cdoAutoPromoteBodyParts http://schemas.microsoft.com/cdo/configuration/autopromotebodyparts; [MarshalAs(UnmanagedType.BStr)] public const string cdoFlushBuffersOnWrite http://schemas.microsoft.com/cdo/configuration/flushbuffersonwrite; [MarshalAs(UnmanagedType.BStr)] public const string cdoHTTPCookies http://schemas.microsoft.com/cdo/configuration/httpcookies; [MarshalAs(UnmanagedType.BStr)] public const string cdoLanguageCode http://schemas.microsoft.com/cdo/configuration/languagecode; [MarshalAs(UnmanagedType.BStr)] public const string cdoNNTPAccountName http://schemas.microsoft.com/cdo/configuration/nntpaccountname; [MarshalAs(UnmanagedType.BStr)] public const string cdoNNTPAuthenticate http://schemas.microsoft.com/cdo/configuration/nntpauthenticate; [MarshalAs(UnmanagedType.BStr)] public const string cdoNNTPConnectionTimeout http://schemas.microsoft.com/cdo/configuration/nntpconnectiontimeout; [MarshalAs(UnmanagedType.BStr)] public const string cdoNNTPServer http://schemas.microsoft.com/cdo/configuration/nntpserver; [MarshalAs(UnmanagedType.BStr)] public const string cdoNNTPServerPickupDirectory http://schemas.microsoft.com/cdo/configuration/nntpserverpickupdirectory; [MarshalAs(UnmanagedType.BStr)] public const string cdoNNTPServerPort http://schemas.microsoft.com/cdo/configuration/nntpserverport; [MarshalAs(UnmanagedType.BStr)] public const string cdoNNTPUseSSL http://schemas.microsoft.com/cdo/configuration/nntpusessl; [MarshalAs(UnmanagedType.BStr)] public const string cdoPostEmailAddress http://schemas.microsoft.com/cdo/configuration/postemailaddress; [MarshalAs(UnmanagedType.BStr)] public const string cdoPostPassword http://schemas.microsoft.com/cdo/configuration/postpassword; [MarshalAs(UnmanagedType.BStr)] public const string cdoPostUserName http://schemas.microsoft.com/cdo/configuration/postusername; [MarshalAs(UnmanagedType.BStr)] public const string cdoPostUserReplyEmailAddress http://schemas.microsoft.com/cdo/configuration/postuserreplyemailaddress; [MarshalAs(UnmanagedType.BStr)] public const string cdoPostUsingMethod http://schemas.microsoft.com/cdo/configuration/postusing; [MarshalAs(UnmanagedType.BStr)] public const string cdoSaveSentItems http://schemas.microsoft.com/cdo/configuration/savesentitems; [MarshalAs(UnmanagedType.BStr)] public const string cdoSendEmailAddress http://schemas.microsoft.com/cdo/configuration/sendemailaddress; [MarshalAs(UnmanagedType.BStr)] public const string cdoSendPassword http://schemas.microsoft.com/cdo/configuration/sendpassword; [MarshalAs(UnmanagedType.BStr)] public const string cdoSendUserName http://schemas.microsoft.com/cdo/configuration/sendusername; [MarshalAs(UnmanagedType.BStr)] public const string cdoSendUserReplyEmailAddress http://schemas.microsoft.com/cdo/configuration/senduserreplyemailaddress; [MarshalAs(UnmanagedType.BStr)] public const string cdoSendUsingMethod http://schemas.microsoft.com/cdo/configuration/sendusing; [MarshalAs(UnmanagedType.BStr)] public const string cdoSMTPAccountName http://schemas.microsoft.com/cdo/configuration/smtpaccountname; [MarshalAs(UnmanagedType.BStr)] public const string cdoSMTPAuthenticate http://schemas.microsoft.com/cdo/configuration/smtpauthenticate; [MarshalAs(UnmanagedType.BStr)] public const string cdoSMTPConnectionTimeout http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout; [MarshalAs(UnmanagedType.BStr)] public const string cdoSMTPServer http://schemas.microsoft.com/cdo/configuration/smtpserver; [MarshalAs(UnmanagedType.BStr)] public const string cdoSMTPServerPickupDirectory http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory; [MarshalAs(UnmanagedType.BStr)] public const string cdoSMTPServerPort http://schemas.microsoft.com/cdo/configuration/smtpserverport; [MarshalAs(UnmanagedType.BStr)] public const string cdoSMTPUseSSL http://schemas.microsoft.com/cdo/configuration/smtpusessl; [MarshalAs(UnmanagedType.BStr)] public const string cdoURLGetLatestVersion http://schemas.microsoft.com/cdo/configuration/urlgetlatestversion; [MarshalAs(UnmanagedType.BStr)] public const string cdoURLProxyBypass http://schemas.microsoft.com/cdo/configuration/urlproxybypass; [MarshalAs(UnmanagedType.BStr)] public const string cdoURLProxyServer http://schemas.microsoft.com/cdo/configuration/urlproxyserver; [MarshalAs(UnmanagedType.BStr)] public const string cdoUseMessageResponseText http://schemas.microsoft.com/cdo/configuration/usemessageresponsetext;}例子代码如下: MailMessage myMail new MailMessage(); myMail.From emailFrom; myMail.To emailTo; myMail.Subject subject; myMail.Body sb.ToString(); myMail.BodyFormat MailFormat.Html; myMail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/sendusing,2); myMail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/sendemailaddress,emailFrom); myMail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/smtpuserreplyemailaddress,emailFrom); myMail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/smtpaccountname,userName); myMail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/sendusername,Your 163.coms userName); myMail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/sendpassword,your 163.coms password); myMail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/smtpauthenticate,1); myMail.Fields.Add(http://schemas.microsoft.com/cdo/configuration/smtpserver,smtp.163.com); //SmtpMail.SmtpServer smtp.163.com; SmtpMail.Send(myMail);
案例二:
已经加上smtp验证,仍然发送失败:原因应该是IIS的设置
运行后系统提示错误信息
Email FailCould not access CDO.Message object.Here is the full error message output:System.Web.HttpException: Could not access CDO.Message object. --- System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. --- System.Runtime.InteropServices.COMException (0x8004020F): The server rejected one or more recipient addresses. The server response was: 550 5.7.1 Unable to relay for 12321323mobile.att.net
检查SMTP SERVICE正常估计是权限设置问题。打开IIS ADMIN右键点击SMTP VIRTUAL SERVER选择属性在ACCESS中点RELAY增加127.0.0.1。一路OK回去。
这时候再运行程序邮件发送成功。
转自:http://blog.joycode.com/cafecat/archive/2004/11/06/38186.aspx
案例三,就是我所遇到的问题,和同事调试多次之后才发现:服务器为了安全,把一些控件(dll)禁用了.
抛出无法加载Dll的错误.
最后发现,发送邮件需要调用到msado15.dll.而ADO被禁用.导致出错.
希望这些能帮到使用System.Web.Mail的人:)