if (this.txtReceiver.Text != string.Empty && this.txtSender.Text != string.Empty)
{
//创建邮件
MailMessage myMail = new MailMessage(this.txtSender.Text.Trim(), this.txtReceiver.Text.Trim(), this.txtSubject.Text.Trim(), this.txtContent.Text.Trim());
myMail.Priority = System.Net.Mail.MailPriority.High; //设置电子邮件的优先级
//创建附件对象
string sFilePath = this.upFile.PostedFile.FileName; //获取指定上载文件的名称
FileInfo fi = new FileInfo(sFilePath); //创建一个可以创建、删除、移动、复制和打开文件的方法
if (fi.Exists) //获取指示文件是否存在的值
{
//创建附件
System.Net.Mail.Attachment myAttachment = new System.Net.Mail.Attachment(sFilePath, System.Net.Mime.MediaTypeNames.Application.Octet);
System.Net.Mime.ContentDisposition disposition = myAttachment.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(sFilePath);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(sFilePath);
disposition.ReadDate = System.IO.File.GetLastAccessTime(sFilePath);
myMail.Attachments.Add(myAttachment);
}
//发送邮件
SmtpClient client = new SmtpClient("smtp.163.com", 25);
// 设置验证发件人的凭证
// client.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
client.Credentials = new System.Net.NetworkCredential(this.txtSUser.Text.Trim(), txtEPwd.Text.Trim());
client.Send(myMail);
}
今晚一直在弄这个,先是出现什么 无法从传输连接中读取数据: net_io_connectionclosed。呀 或者 是 无法获取 IIS 拾取目录。 或者是 System.Net.Mail.SmtpException: 不允许使用邮箱名称这些错误,但问题的根本还是 smtp服务器的问题,像上面的代码中,你写的是发到QQ邮箱那里去的话,是发不了的,如果是QQ邮箱的话,要保证你的邮箱开通SMTP服务,并配置好相应的端口号。而我上面的是163的,对应得端口是25,所以是能成功发邮件的。
所以,各位在写代码的时候一定要注意smtp服务器和其相应的端口!!!!