using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net.Mail;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using System.Text.RegularExpressions;public partial class E3_SB_Goods3_SendMail : System.Web.UI.Page
{
string userId = null;
string mail = null;//发送者邮箱
string pwd = null;//发送者邮箱密码
string tomail = null;//发送给
string fileName = null;//附件名
private static int j = 0;
protected void Page_Load(object sender, EventArgs e)
{
userId = Request.QueryString["userId"].ToString();
if (userId == null || userId == "")
{
Response.Redirect("../Default.aspx");
}
else
{
SqlConnection conn = new SqlConnection("Data Source=.;Database=information;User Id=sa;Password=sa2005;");
conn.Open();
string sql = "select Email,other1 from sb_users where userId='" + userId + "'";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
mail = reader["email"].ToString();
pwd = reader["other1"].ToString();
}
}
} public void send()
{
MailAddress EmailFrom =new MailAddress(mail);
tomail = this.TextBox1.Text;
MailAddress EmailTo = new MailAddress(tomail); MailMessage Email = new MailMessage(EmailFrom, EmailTo);
Email.Priority = MailPriority.High; Email.Subject = this.TextBox2.Text;
Email.Body = this.Editor1.Text;
//添加抄送电子邮件
Email.CC.Add(EmailTo); if (j > 0)
{
Attachment data = new Attachment(fileName, System.Net.Mime.MediaTypeNames.Application.Octet); //Add time stamp information for the file.
System.Net.Mime.ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(fileName);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(fileName);
disposition.ReadDate = System.IO.File.GetLastAccessTime(fileName);
// Add the file attachment to this e-mail message.
Email.Attachments.Add(data);
} string smtpString = null;
Regex reg = new Regex(@"@([^\.]*?)\.");
Match m = reg.Match(tomail);
string mailStr = null;
if (m.Success)
{
mailStr = m.Result("$1");
}
if (mailStr.Equals("qq"))
{
smtpString = "smtp.qq.com";
}
if (mailStr.Equals("163"))
{
smtpString = "smtp.163.com";
}
if (mailStr.Equals("sohu"))
{
smtpString = "smtp.sohu.com";
}
if (mailStr.Equals("sina"))
{
smtpString = "smtp.sina.com";
}
SmtpClient Client = new SmtpClient(smtpString); //验证 (Credentials 凭证)
Client.Credentials = new System.Net.NetworkCredential(mail, pwd); //处理待发的电子邮件的方法 (Delivery 发送,传输)
Client.DeliveryMethod = SmtpDeliveryMethod.Network;
try
{
Client.Send(Email);
Response.Write("<script>alert('已发送成功啦');</script>");
}
catch (SmtpFailedRecipientsException ex)
{
for (int i = 0; i < ex.InnerExceptions.Length; i++)
{
SmtpStatusCode status = ex.InnerExceptions[i].StatusCode;
if (status == SmtpStatusCode.MailboxBusy || status == SmtpStatusCode.MailboxUnavailable)
{
Response.Write("Delivery failed - retrying in 5 seconds.");
System.Threading.Thread.Sleep(5000);
Client.Send(Email);
}
else
{
Response.Write("Failed to deliver message to {0}" + ex.FailedRecipient[i].ToString().Trim() + "");
}
} }
}
protected void Button1_Click(object sender, EventArgs e)
{
if (this.TextBox1.Text == null || this.TextBox1.Text == "")
{
Response.Write("<script>alert('请填写邮件地址!');</script>");
}
send();
} protected void Button2_Click(object sender, EventArgs e)
{
Boolean fileOk = false;
string path = Server.MapPath("~/upload/");
//判断是否已经选取文件
if (FileUpload1.HasFile)
{
//取得文件的扩展名,并转换成小写
string fileExtension = System.IO.Path.GetExtension(this.FileUpload1.FileName).ToLower();
//限定只能上传jpg和gif图片
string[] allowExtension = { ".jpg", ".gif",".jpeg" };
//对上传的文件的类型进行一个个匹对
for (int i = 0; i < allowExtension.Length; i++)
{
if (fileExtension == allowExtension[i])
{
fileOk = true;
break;
}
}
//对上传文件的大小进行检测,限定文件最大不超过10M
if (FileUpload1.PostedFile.ContentLength > 10240000)
{
fileOk = false;
}
//最后的结果
if (fileOk)
{
try
{
string time = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString("00") + DateTime.Now.Hour.ToString("00") + DateTime.Now.Minute.ToString("00");
fileName = userId + "_" + time + "_" + this.FileUpload1.FileName;
this.FileUpload1.PostedFile.SaveAs(path + fileName);
j = 1;
}
catch
{
this.Label4.Text = "上传失败!";
}
}
else
{
Response.Write("<script>window.alert('文件类型或者文件大小超出10M')</script>");
} }
}
}
我定义一个整数型j,当上传邮件附件后,j就=1,我点击发送判断j是不是>0,是的话就添加附件发送,不是的话就直接发送。为什么报错?错误信息为:命令顺序不正确。 服务器响应为: Error: need EHLO and AUTH first !
if (j > 0)
{
Attachment data = new Attachment(fileName, System.Net.Mime.MediaTypeNames.Application.Octet); //Add time stamp information for the file.
System.Net.Mime.ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(fileName);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(fileName);
disposition.ReadDate = System.IO.File.GetLastAccessTime(fileName);
// Add the file attachment to this e-mail message.
Email.Attachments.Add(data);
}
放到
try
{
Client.Send(Email);
Response.Write("<script>alert('已发送成功啦');</script>");
}
前面,试试
/// <summary>
/// 指定用户邮箱发邮件
/// </summary>
/// <param name="subject">邮件主题</param>
/// <param name="content">邮件内容</param>
/// <param name="Recipient">收件人</param>
/// <param name="companyname">收件人名称</param>
/// <param name="CCFlag">是否抄送</param>
/// <returns></returns>
public static bool EnSystemMail(string subject, string content, string Recipient, string companyname,bool CCFlag)
{
System.Net.Mail.SmtpClient client = new SmtpClient();
client.Host = "mail.XXXX.cc";
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("[email protected]","yaXX");
client.DeliveryMethod = SmtpDeliveryMethod.Network; client.EnableSsl = false;
client.Timeout = 100000; System.Net.Mail.MailMessage message = new MailMessage(); message.From = new MailAddress("[email protected]", "上XXX司");//发送方 message.To.Add(new MailAddress(Recipient,companyname)); //接收方 if (CCFlag)
{
message.CC.Add(new MailAddress("[email protected]", "染料展项目组"));
}
message.Subject = subject;
message.Body = content;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.IsBodyHtml = true; try
{
client.Send(message); return true;
}
catch
{
return false;
} }
参考下吧.
不懂你的意思,我不是放在try语句块的前面了么? 是让我放入try语句的里面?
把
if (j > 0)
{
Attachment data = new Attachment(fileName, System.Net.Mime.MediaTypeNames.Application.Octet); //Add time stamp information for the file.
System.Net.Mime.ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(fileName);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(fileName);
disposition.ReadDate = System.IO.File.GetLastAccessTime(fileName);
// Add the file attachment to this e-mail message.
Email.Attachments.Add(data);
}
放到
//处理待发的电子邮件的方法 (Delivery 发送,传输)
Client.DeliveryMethod = SmtpDeliveryMethod.Network;
后面
if (j > 0)
{
Attachment data = new Attachment(fileName, System.Net.Mime.MediaTypeNames.Application.Octet);//Add time stamp information for the file.
System.Net.Mime.ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(fileName);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(fileName);
disposition.ReadDate = System.IO.File.GetLastAccessTime(fileName);
// Add the file attachment to this e-mail message.
Email.Attachments.Add(data);
}
注销了,发送邮件还是报错,为什么啊?
disposition.ModificationDate = System.IO.File.GetLastWriteTime(fileName);
disposition.ReadDate = System.IO.File.GetLastAccessTime(fileName);
这3个方法哪个是保存邮件名称的啊?