做项目的时候,有一个需求,用户一次上传多个附件,可传1-5个。并且这5个附件上传之后,自动发到某人的email里, email的内容除了用户的资料,而且是上传的附件也做为email里的附件。
基于之前的jmail用法众多,我就开始了jamil+自己的需要来开发。
首先是jmail+.net2.0的使用,最容易的方法就是先下载一个jmail4.3.rar 这个很多,解压之后:
1.安装jmail.dll
2.把jmail.dll放在c:/下
3.系统 注册Jmail:Regsvr32 C:/jmail.dll
4.windows桌面-菜单-vs2005-v s Tools--命令提示
5.命令返回:
M......Net Framework Type Library to Assembly ......All right reserved.
Type library imported to C:/p f/M v s 8/vc/myJamil.dll
6.在用的时候,因为没有控件,所以无法添加到选项卡里,要在项目的解决方案资源管理器右键,引用-找到myJamil.dll,Bin目录里就会加入myJmail.dll
好了,基础工作己经OK,废话不说,附实现的类,记得引用空间:
3个函数,分别对应 无附件的电邮发送,单附件的电邮发送,多附件的电邮发送,使用时请修改real_sendemail_name 和 real_sendemail_pass 的值
using myJmail;//配合myJmail.dll使用
public class email
{
#region 发电邮相关
public static string real_sendemail_name ="yourmail@163.com";
public static string real_sendemail_pass ="xxx"
/// <summary>
/// 发送无附件的电邮(TEXT模式)~~
/// </summary>
/// <param name="subject">电邮主题</param>
/// <param name="email_body">电邮内容</param>
/// <param name="to_email">收件人</param>
/// <param name="from_email">发件人</param>
public static string Send_text_email(string subject, string email_body,string to_email)
{
try
{
myJmail.Message Jmail = new myJmail.Message();
DateTime t = DateTime.Now;
string Subject = subject;//电邮标题
string body = email_body;//电邮正文
string FromEmail = real_sendemail_name.Trim().ToString();//发件人
string ToEmail = to_email;//收件人
//Silent属性:如果设置为true,JMail不会抛出例外错误. JMail. Send( () 会根据操作结果返回true或false
Jmail.Silent = true;
//Jmail创建的日志,前提loging属性设置为true
Jmail.Logging = true;
//字符集,缺省为"US-ASCII"
Jmail.Charset = "GB2312";
//信件的contentype. 缺省是"text/plain") : 字符串如果你以HTML格式发送邮件, 改为"text/html"即可。
//Jmail.ContentType = "text/html";
ToEmail = ToEmail.Replace("/n", "").Replace(" ", "");
string[] str = ToEmail.Split(',');
for (int i = 0; i < str.Length; i++)
{
//添加收件人
Jmail.AddRecipient(str[i], "", "");
Jmail.From = FromEmail;
//发件人邮件用户名
Jmail.MailServerUserName = real_sendemail_name;
//发件人邮件密码
Jmail.MailServerPassWord = real_sendemail_pass;//FromEmail邮箱的登陆密码
//设置邮件标题
Jmail.Subject = Subject;
//邮件内容
Jmail.Body = body + "/n" + t.ToString();
//加密文件
//Jmail.PGPEncrypt = true;
//Jmail发送的方法
Jmail.Send("smtp.163.com", false);
Jmail.ClearAttachments();
Jmail.ClearRecipients();
}
Jmail.Close();
return "发送成功";
}
catch (Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// 发送单文件附件的电邮(TEXT模式)~~
/// </summary>
/// <param name="subject">电邮主题</param>
/// <param name="email_body">电邮内容</param>
/// <param name="to_email">收件人</param>
/// <param name="attach_floder">附件的所在目录,./attach_floder目录(相对路径)</param>
/// <param name="attach_files_name">附件的名字</param>
public static string Send_one_Attach_email(string subject, string email_body, string to_email,string attach_floder,string attach_files_name)
{
try
{
myJmail.Message Jmail = new myJmail.Message();
DateTime t = DateTime.Now;
string Subject = subject;//电邮标题
string body = email_body;//电邮正文
string FromEmail = real_sendemail_name.Trim().ToString();//发件人
string ToEmail = to_email;//收件人
string uploadpic_path = System.Web.HttpContext.Current.Server.MapPath("./" + attach_floder + "/");
string AddAttachment = uploadpic_path + attach_files_name;
//Silent属性:如果设置为true,JMail不会抛出例外错误. JMail. Send( () 会根据操作结果返回true或false
Jmail.Silent = true;
//Jmail创建的日志,前提loging属性设置为true
Jmail.Logging = true;
//字符集,缺省为"US-ASCII"
Jmail.Charset = "GB2312";
//信件的contentype. 缺省是"text/plain") : 字符串如果你以HTML格式发送邮件, 改为"text/html"即可。
//Jmail.ContentType = "text/html";
ToEmail = ToEmail.Replace("/n", "").Replace(" ", "");
string[] str = ToEmail.Split(',');
for (int i = 0; i < str.Length; i++)
{
//添加收件人
Jmail.AddRecipient(str[i], "", "");
Jmail.From = FromEmail;
//发件人邮件用户名
Jmail.MailServerUserName = FromEmail;
//发件人邮件密码
Jmail.MailServerPassWord = real_sendemail_pass;//FromEmail邮箱的登陆密码
//设置邮件标题
Jmail.Subject = Subject;
Jmail.AddAttachment(AddAttachment, true, null);
//邮件内容
Jmail.Body = body + "/n" + t.ToString();
//加密文件
//Jmail.PGPEncrypt = true;
//Jmail发送的方法
Jmail.Send("smtp.163.com", false);
Jmail.ClearAttachments();
Jmail.ClearRecipients();
}
Jmail.Close();
return "发送成功";
}
catch (Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// 发送多文件附件的电邮(TEXT模式)~~
/// </summary>
/// <param name="subject">电邮主题</param>
/// <param name="email_body">电邮内容</param>
/// <param name="to_email">收件人</param>
/// <param name="attach_floder">附件的所在目录,./attach_floder目录(相对路径)</param>
/// <param name="attach_files_name">附件的名字字符串,中间用,分隔</param>
public static string Send_Attachs_email(string subject, string email_body, string to_email, string attach_floder, string attach_files_name)
{
try
{
myJmail.Message Jmail = new myJmail.Message();
DateTime t = DateTime.Now;
string Subject = subject;//电邮标题
string body = email_body;//电邮正文
string FromEmail = real_sendemail_name.Trim().ToString();//发件人
string ToEmail = to_email;//收件人
string uploadpic_path = System.Web.HttpContext.Current.Server.MapPath("./" + attach_floder + "/");
//分隔附件的字符串
string[] n_files = attach_files_name.Split(',');
//Silent属性:如果设置为true,JMail不会抛出例外错误. JMail. Send( () 会根据操作结果返回true或false
Jmail.Silent = true;
//Jmail创建的日志,前提loging属性设置为true
Jmail.Logging = true;
//字符集,缺省为"US-ASCII"
Jmail.Charset = "GB2312";
//信件的contentype. 缺省是"text/plain") : 字符串如果你以HTML格式发送邮件, 改为"text/html"即可。
//Jmail.ContentType = "text/html";
ToEmail = ToEmail.Replace("/n", "").Replace(" ", "");
string[] str = ToEmail.Split(',');
for (int i = 0; i < str.Length; i++)
{
//添加收件人
Jmail.AddRecipient(str[i], "", "");
Jmail.From = FromEmail;
//发件人邮件用户名
Jmail.MailServerUserName = FromEmail;
//发件人邮件密码
Jmail.MailServerPassWord = real_sendemail_pass;//FromEmail邮箱的登陆密码
//设置邮件标题
Jmail.Subject = Subject;
for (int j = 0; j < n_files.Length; j++)
{
Jmail.AddAttachment(uploadpic_path + n_files[j], true, null);
}
//邮件内容
Jmail.Body = body + "/n" + t.ToString();
//加密文件
//Jmail.PGPEncrypt = true;
//Jmail发送的方法
Jmail.Send("smtp.163.com", false);
Jmail.ClearAttachments();
Jmail.ClearRecipients();
}
Jmail.Close();
return "发送成功";
}
catch (Exception ex)
{
return ex.Message;
}
}
#endregion 发电邮相关
}