
/// <summary>
/// 用Jmail组件发送邮件
/// </summary>
private static string SendMailWithJmail(string SMTPServer,int SMTPPort,string FromMail,string Password,string FromName,bool SMTPAuth,MailInfo mail,string sAttachments,string strSrcFiles)
{
jmail.Message Jmail=new jmail.Message(); //创建消息对象
//Silent属性:如果设置为true,JMail不会抛出例外错误。 JMail.Send()会根据操作结果返回true或false
Jmail.Silent=false;
//Jmail创建的日志,前提loging属性设置为true
Jmail.Logging=true;
//字符集,缺省为"US-ASCII"
Jmail.Charset="GB2312";
//指定内容传送时的编码方式,缺省是"Quoted-Printable"
//Jmail.ContentTransferEncoding = "base64";
//这个属性可以用来改变附件编码方式(缺省是"base64). 可以选择使用的是"base64", "uuencode" or "quoted-printable"
Jmail.Encoding = "base64";
//是否将信头编码成iso-8859-1字符集. 缺省是true
Jmail.ISOEncodeHeaders = false;
//指定mime版本。缺省是"1.0"
//Jmail.MimeVersion = "1.0";
//优先级. 范围在1-5之间 【 1 高优先级. 有些邮件程序称之为紧急 2 也是高优先级 3 普通优先级 4 低优先级 5 最低的优先级】
Jmail.Priority = 2;
//string str=Jmail.Date.ToString();//=System.DateTime.Now.ToString();
//设置发件人邮件地址
Jmail.From=FromMail;
//设置发件人姓名
Jmail.FromName=FromName;
//发件人邮件用户名
Jmail.MailServerUserName=FromMail;//"康康" <121335337@163.com>
//发件人邮件密码
Jmail.MailServerPassWord=Password;
//设置邮件标题
Jmail.Subject=mail.sSubject;
//指定是否发件人需要一个回执. 缺省是false
bool bolReturnReceipt=mail.iReturnReceipt==1?true:false;
Jmail.ReturnReceipt =bolReturnReceipt;
if(bolReturnReceipt)
{
//指定一个可选的回信地址
Jmail.ReplyTo=FromMail;
Jmail.AddHeader("Disposition-Notification-To",FromName+"<"+FromMail+">");
}
//邮件内容
Jmail.Body=mail.sContent;
//发送图片的处理
string sPath="/OA/eWebEditorNet/UploadFile/";
string sPath2="/oa/eWebEditorNet/UploadFile/";
if(Jmail.Body.IndexOf(sPath)!=-1)
{
Jmail.Body = Jmail.Body.Replace(sPath, (Common_Core.LDK.GetUrlRoot() + sPath));
}
else if(Jmail.Body.IndexOf(sPath2)!=-1)
{
Jmail.Body = Jmail.Body.Replace(sPath2, (Common_Core.LDK.GetUrlRoot() + sPath2));
}
//System.Web.HttpContext.Current.Server.
//设置延期发送. 如果邮件服务器支持的话,消息到了这个时间才会发送
//Jmail.DeferredDelivery=System.DateTime.Now;
//收件人
Jmail.ClearRecipients(); //清除收件人列表
string[] strAddr=mail.sRecipient.Trim().Split (',');
for(int i=0;i<strAddr.Length ;i++)
{
if(strAddr[i]!=string.Empty)
{
string strMailTemp = Common_Core.LDK.EmailOnly(strAddr[i]);
if(strMailTemp!=string.Empty)
{
Jmail.AddRecipient(strMailTemp,string.Empty,string.Empty); //添加收件人
}
}
}
//Jmail.Date =Convert.ToDateTime(mail.dAtSendDate);
//抄送人
string[] strAddrCC=mail.sRecipientCC.Trim().Split (',');
for(int i=0;i<strAddrCC.Length;i++)
{
if(strAddrCC[i]!=string.Empty)
{
string strMailTemp = Common_Core.LDK.EmailOnly(strAddrCC[i]);
if(strMailTemp!=string.Empty)
{
Jmail.AddRecipientCC(strMailTemp,string.Empty,string.Empty); //添加抄送人
}
}
}
//密送人
string[] strAddrBCC=mail.sRecipientBCC.Trim().Split (',');
for(int i=0;i<strAddrBCC.Length;i++)
{
if(strAddrBCC[i]!=string.Empty)
{
string strMailTemp = Common_Core.LDK.EmailOnly(strAddrBCC[i]);
if(strMailTemp!=string.Empty)
{
Jmail.AddRecipientBCC(strMailTemp,string.Empty); //添加密送人
}
}
}
//邮件附件 [注]:加了附件,要把Jmail.ContentType="text/html";删掉。否则会在邮件里出现乱码。
Jmail.ClearAttachments(); //清除附件列表
string strTempID=System.Guid .NewGuid ().ToString ();
string strSendAtt="";
try
{
if(sAttachments.Trim()!=string.Empty)
{
string[] attachments=sAttachments.Trim().Split('\n');
string[] attSrcs=strSrcFiles.Split ('\n');
string strTempFile="";
for(int i=0;i<attachments.Length;i++)
{
if(attachments[i]!=string.Empty)
{
strTempFile=CreateTempFile(attachments[i],attSrcs[i]);
strSendAtt=strSendAtt+strTempFile+"\n";
Jmail.AddAttachment(strTempFile,true,null);
}
}
}
else
{
//(信件的contentype. 缺省是"text/plain" :字符串)如果你以HTML格式发送邮件, 改为"text/html"即可。
Jmail.ContentType="text/html";
}
}
catch(Exception eb)
{
return eb.Message ;
}
//
try
{
bool flag=Jmail.Send(SMTPServer,false);
//强制JMail关闭缓冲的与邮件服务器的连接
Jmail.Close();
DeleteTempFile(strSendAtt);
return flag==false?Jmail.ErrorMessage :string.Empty;
}
catch(Exception ex)
{
return ex.Message;
}
}
/// 用Jmail组件发送邮件
/// </summary>
private static string SendMailWithJmail(string SMTPServer,int SMTPPort,string FromMail,string Password,string FromName,bool SMTPAuth,MailInfo mail,string sAttachments,string strSrcFiles)
{
jmail.Message Jmail=new jmail.Message(); //创建消息对象
//Silent属性:如果设置为true,JMail不会抛出例外错误。 JMail.Send()会根据操作结果返回true或false
Jmail.Silent=false;
//Jmail创建的日志,前提loging属性设置为true
Jmail.Logging=true;
//字符集,缺省为"US-ASCII"
Jmail.Charset="GB2312";
//指定内容传送时的编码方式,缺省是"Quoted-Printable"
//Jmail.ContentTransferEncoding = "base64";
//这个属性可以用来改变附件编码方式(缺省是"base64). 可以选择使用的是"base64", "uuencode" or "quoted-printable"
Jmail.Encoding = "base64";
//是否将信头编码成iso-8859-1字符集. 缺省是true
Jmail.ISOEncodeHeaders = false;
//指定mime版本。缺省是"1.0"
//Jmail.MimeVersion = "1.0";
//优先级. 范围在1-5之间 【 1 高优先级. 有些邮件程序称之为紧急 2 也是高优先级 3 普通优先级 4 低优先级 5 最低的优先级】
Jmail.Priority = 2;
//string str=Jmail.Date.ToString();//=System.DateTime.Now.ToString();
//设置发件人邮件地址
Jmail.From=FromMail;
//设置发件人姓名
Jmail.FromName=FromName;
//发件人邮件用户名
Jmail.MailServerUserName=FromMail;//"康康" <121335337@163.com>
//发件人邮件密码
Jmail.MailServerPassWord=Password;
//设置邮件标题
Jmail.Subject=mail.sSubject;
//指定是否发件人需要一个回执. 缺省是false
bool bolReturnReceipt=mail.iReturnReceipt==1?true:false;
Jmail.ReturnReceipt =bolReturnReceipt;
if(bolReturnReceipt)
{
//指定一个可选的回信地址
Jmail.ReplyTo=FromMail;
Jmail.AddHeader("Disposition-Notification-To",FromName+"<"+FromMail+">");
}
//邮件内容
Jmail.Body=mail.sContent;
//发送图片的处理
string sPath="/OA/eWebEditorNet/UploadFile/";
string sPath2="/oa/eWebEditorNet/UploadFile/";
if(Jmail.Body.IndexOf(sPath)!=-1)
{
Jmail.Body = Jmail.Body.Replace(sPath, (Common_Core.LDK.GetUrlRoot() + sPath));
}
else if(Jmail.Body.IndexOf(sPath2)!=-1)
{
Jmail.Body = Jmail.Body.Replace(sPath2, (Common_Core.LDK.GetUrlRoot() + sPath2));
}
//System.Web.HttpContext.Current.Server.
//设置延期发送. 如果邮件服务器支持的话,消息到了这个时间才会发送
//Jmail.DeferredDelivery=System.DateTime.Now;
//收件人
Jmail.ClearRecipients(); //清除收件人列表
string[] strAddr=mail.sRecipient.Trim().Split (',');
for(int i=0;i<strAddr.Length ;i++)
{
if(strAddr[i]!=string.Empty)
{
string strMailTemp = Common_Core.LDK.EmailOnly(strAddr[i]);
if(strMailTemp!=string.Empty)
{
Jmail.AddRecipient(strMailTemp,string.Empty,string.Empty); //添加收件人
}
}
}
//Jmail.Date =Convert.ToDateTime(mail.dAtSendDate);
//抄送人
string[] strAddrCC=mail.sRecipientCC.Trim().Split (',');
for(int i=0;i<strAddrCC.Length;i++)
{
if(strAddrCC[i]!=string.Empty)
{
string strMailTemp = Common_Core.LDK.EmailOnly(strAddrCC[i]);
if(strMailTemp!=string.Empty)
{
Jmail.AddRecipientCC(strMailTemp,string.Empty,string.Empty); //添加抄送人
}
}
}
//密送人
string[] strAddrBCC=mail.sRecipientBCC.Trim().Split (',');
for(int i=0;i<strAddrBCC.Length;i++)
{
if(strAddrBCC[i]!=string.Empty)
{
string strMailTemp = Common_Core.LDK.EmailOnly(strAddrBCC[i]);
if(strMailTemp!=string.Empty)
{
Jmail.AddRecipientBCC(strMailTemp,string.Empty); //添加密送人
}
}
}
//邮件附件 [注]:加了附件,要把Jmail.ContentType="text/html";删掉。否则会在邮件里出现乱码。
Jmail.ClearAttachments(); //清除附件列表
string strTempID=System.Guid .NewGuid ().ToString ();
string strSendAtt="";
try
{
if(sAttachments.Trim()!=string.Empty)
{
string[] attachments=sAttachments.Trim().Split('\n');
string[] attSrcs=strSrcFiles.Split ('\n');
string strTempFile="";
for(int i=0;i<attachments.Length;i++)
{
if(attachments[i]!=string.Empty)
{
strTempFile=CreateTempFile(attachments[i],attSrcs[i]);
strSendAtt=strSendAtt+strTempFile+"\n";
Jmail.AddAttachment(strTempFile,true,null);
}
}
}
else
{
//(信件的contentype. 缺省是"text/plain" :字符串)如果你以HTML格式发送邮件, 改为"text/html"即可。
Jmail.ContentType="text/html";
}
}
catch(Exception eb)
{
return eb.Message ;
}
//
try
{
bool flag=Jmail.Send(SMTPServer,false);
//强制JMail关闭缓冲的与邮件服务器的连接
Jmail.Close();
DeleteTempFile(strSendAtt);
return flag==false?Jmail.ErrorMessage :string.Empty;
}
catch(Exception ex)
{
return ex.Message;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述