邮件发送,
各位大虾们,小弟现在遇到一难题。
本人做了一个小型的考试网站,
考生考完试点击提交答卷的时候要把他的答卷(.aspx里面有图片等)以邮件的形式发送给他,
我应该怎么做呢,把一个aspx界面当作是一个邮件发送到对方邮件中去呢。??程序中怎么写??
495362746@qq.com
[解决办法]
图片作为附件发送
C# 发送邮件的代码网上很多
[解决办法]
aspx.net 内置的也有发邮件的...可以直接用...不过要新建服务sms
[解决办法]
MailAddress from = new MailAddress("070812041@163.com", "东东"); //邮件的发件人,后面为显示的名字 MailMessage mail = new MailMessage(); mail.Subject = txtSubject.Text; //设置邮件的标题 mail.From = from; //设置邮件的发件人 //多人发送 string address = ""; string displayName = ""; string[] mailNames = (txtMailTo.Text + ";").Split(';'); foreach (string name in mailNames) { if (name != string.Empty) { if (name.IndexOf('<') > 0) { displayName = name.Substring(0, name.IndexOf('<')); address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' '); } else { displayName = string.Empty; address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' '); } // mail.To.Add(new MailAddress(address, displayName)); mail.CC.Add(new MailAddress(address, displayName)); //收件人地址的集合 } } mail.Body = txtBody.Text; //设置邮件的内容 mail.BodyEncoding = System.Text.Encoding.UTF8; //设置邮件的格式 mail.IsBodyHtml = true; //设置正文是否为HTML格式 mail.Priority = MailPriority.Normal; //设置邮件的发送级别 if (txtMailTo.Text != "") { string fileName = txtUpFile.Text.Trim(); //设置邮件的附件 fileName = fileName.Substring(fileName.LastIndexOf("\\") + 1); //取文件名 mail.Attachments.Add(new Attachment(fileName)); //添加附件到邮件当中 } mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess; SmtpClient client = new SmtpClient(); client.Host = "smtp.163.com"; //设置SMTP的地址,注意:是什么邮箱就应该用相对应的地址 client.Port = 25; //设置用于 SMTP 事务的端口,默认的是 25 client.UseDefaultCredentials = false; client.Credentials = new System.Net.NetworkCredential("*****", "*****");//我的邮箱的登录名和密码。就是发送方的用户名和密码,要对应上面的Host地址 client.DeliveryMethod = SmtpDeliveryMethod.Network; client.Send(mail); //邮件的正式发送 MessageBox.Show("发送成功"); } private void btn_send_Click(object sender, EventArgs e) { sendMail(); }
[解决办法]
图片也可作为附件发送
MailMessage message = new MailMessage(From, To, Subject, Body);
Attachment data = null;
if (Files != null && Files.Length > 0)
{
foreach (string file in Files)
{
data = new Attachment(file, MediaTypeNames.Application.Octet);
ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(file);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
message.Attachments.Add(data);
}
}
message.IsBodyHtml = true;
SmtpClient client = new SmtpClient(Server);
client.Credentials = new NetworkCredential(UserName, Password);
client.Send(message);
if (data != null) data.Dispose();
[解决办法]
楼主是想将整个页面作为附件发送吧!!!
我建议你可以将整个页面导入到Excel中 存放在本地 然后上传发送 如果这样行 我有代码可以给你借鉴一下
[解决办法]
public void HtmlToMht(string src, string dst)
{
CDO.Message msg = new CDO.MessageClass();
CDO.Configuration c = new CDO.ConfigurationClass();
msg.Configuration = c;
msg.CreateMHTMLBody(src, CDO.CdoMHTMLFlags.cdoSuppressNone, "", "");
ADODB.Stream stream = msg.GetStream();
stream.SaveToFile(dst, ADODB.SaveOptionsEnum.adSaveCreateOverWrite);
}
需要添加引用CDO.
把页面直接保存成图片,然后做附件发,
或者用HttpWebRequest 获取页面,不过需要先把答案保存,再读到页面上,页面才会有答案。
获取后,当邮件正文发就行了。
[解决办法]
我觉得难点不在发邮件,而在于将页面截图,并作为附件发送。
不过我觉得还是在Code behind中取得页面field的值,并组合成邮件的正文发送。这样简单些。
[解决办法]
下载DEMO
public static void Send() { SmtpClient client = new SmtpClient(); client.DeliveryMethod = SmtpDeliveryMethod.Network; client.EnableSsl = false; client.Host = "smtp.163.com"; //可以配置成其他邮件服务器 client.Port = 25; client.Credentials = new NetworkCredential("发件人邮件帐号", "邮箱密码"); MailMessage mm = new MailMessage(); mm.Priority = MailPriority.High; mm.From = new MailAddress("发件人邮件帐号"); mm.Sender = new MailAddress("发件人邮件帐号"); mm.To.Add(new MailAddress("收件人邮件帐号")); mm.Subject = "到期提醒!"; StringBuilder sb = new StringBuilder(); sb.AppendLine("到期提醒!"); sb.AppendLine("请登录人力资源系统及时处理即将到期的合同"); sb.AppendLine(DateTime.Now.ToShortDateString()); sb.AppendLine("人力资源系统管理员"); mm.Body = sb.ToString(); mm.IsBodyHtml = true; // client.DeliveryMethod = SmtpDeliveryMethod.Network; try { client.Send(mm); } catch (Exception ex) { throw ex; } }