如何用C#实现发送带附件的邮件???

qiaoguangyan86 2008-04-13 04:01:30
我现在做的是一个通C#编程来实现邮件的发送,但是一添加附件就出现错误,那位大哥能帮一把?谢了
...全文
102 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weiphone 2008-04-13
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Net.Mail;
using System.IO;
using System.Net.Mime;

namespace sn.Common
{
public class Comm
{
#region 读取Web.config值
public static string GetConfigByKey(string key)
{
return ConfigurationSettings.AppSettings[key];
}
#endregion

#region 电子邮件

/// <summary>
/// 判断附件容量
/// </summary>
/// <param name="file">文件地址</param>
/// /// <param name="MaxSize">最大容量,单位:M</param>
/// <returns></returns>
public static Attachment GetAttachment(string file,int MaxSize)
{
if (!File.Exists(file))
{
System.Web.HttpContext.Current.Response.Write("<script>alert('" + file + "文件不存在!')</script>");
System.Web.HttpContext.Current.Response.End();
return null;
}
int size = 0;
FileStream fs = new FileStream(file, FileMode.Open);
string name = fs.Name;
size = (int)(fs.Length / 1024);
fs.Close();

//控制文件大小不大于10M
if (size > 1024*MaxSize)
{
System.Web.HttpContext.Current.Response.Write("<script>alert('附件容量过大!')</script>");
System.Web.HttpContext.Current.Response.End();
return null;
}
Attachment att = new Attachment(file, MediaTypeNames.Application.Octet);
ContentDisposition disposition = att.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(file);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
return att;
}

/// <summary>
/// 判断附件容量
/// </summary>
/// <param name="file">文件地址</param>
/// <returns></returns>
public static Attachment GetAttachment(string file)
{
return GetAttachment(file,10);
}

/// <summary>
/// 发送EMAIL
/// </summary>
/// <param name="from">发件人地址</param>
/// <param name="password">密码</param>
/// <param name="DisPalyName">对方收到时显示的名称</param>
/// <param name="to">收件人</param>
/// <param name="cc">抄送:默认为空</param>
/// <param name="subject">主题</param>
/// <param name="ssl">经过ssl加密</param>
/// <param name="priority">邮件优先级:MailPriority.High</param>
/// <param name="isbodyhtml">是否HTML邮件</param>
/// <param name="attachment">附件:没有则为null</param>
/// <param name="body">正文</param>
/// <returns>返回值:如果为空则成功,否则失败</returns>
public static string SendEMail(string from, string password, string DisPalyName, string to, string cc, string subject, bool ssl, MailPriority priority, bool isbodyhtml, Attachment attachment, string body)
{
MailMessage mm = new MailMessage();
mm.From = new MailAddress(from, DisPalyName, Encoding.UTF8);
mm.To.Add(to);
mm.SubjectEncoding = Encoding.UTF8;
mm.Subject = subject;
if (attachment != null)
mm.Attachments.Add(attachment);
if (cc != null && cc != "")
mm.CC.Add(cc); //抄送
mm.IsBodyHtml = isbodyhtml; //是否是HTML邮件
mm.BodyEncoding = Encoding.UTF8; //编码
mm.Priority = priority; // MailPriority.High; //优先级
mm.Body = body;
SmtpClient sc = new SmtpClient();
sc.Credentials = new System.Net.NetworkCredential(from, password);
//sc.Port = 25;
sc.Host = "smtp." + from.Substring(from.IndexOf('@') + 1);
try
{
sc.Send(mm);
return "";
}
catch (Exception ee)
{
return ee.ToString();
}
}

/// <summary>
/// 发送EMAIL
/// </summary>
/// <param name="from">发件人地址</param>
/// <param name="password">密码</param>
/// <param name="DisPalyName">对方收到时显示的名称</param>
/// <param name="to">收件人</param>
/// <param name="cc">抄送:默认为空</param>
/// <param name="subject">主题</param>
/// <param name="attachment">附件</param>
/// <param name="body">正文</param>
/// <returns>返回值:如果为空则成功,否则失败</returns>
public static string SendEMail(string from, string password, string DisPalyName, string to, string cc, string subject,Attachment attachment, string body)
{
return SendEMail(from,password,DisPalyName,to,cc,subject,false,MailPriority.High,false,attachment,body);
}
#endregion
}
}





protected void btnSend_Click(object sender, EventArgs e)
{
string from = Comm.GetConfigByKey("MailFrom");
string pass = Comm.GetConfigByKey("MailPassWord");
string name = Comm.GetConfigByKey("YourName");
Attachment att;
if (File1.Value != "")
att = Comm.GetAttachment(File1.Value, 10);
else
att = null;
string msg = Comm.SendEMail(from, pass, name, txtTo.Text,"",txtTitle.Text, att,txtMemo.Text);
if (att!=null)
att.Dispose();//释放附件
if (msg == "")
Response.Write("发送成功!");
else
Response.Write("发送失败,原因:"+msg);
}

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧