Sun_Blue_Sky

菩提本无树,明镜亦非台,本来无一物,何处惹尘埃 寻求内心的平静
随笔 - 21, 文章 - 92, 评论 - 75, 阅读 - 10万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

关于Jmail

Posted on   Sun_Blue_Sky  阅读(157)  评论(0编辑  收藏  举报
复制代码
代码
/// <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;
            }
        }
        
复制代码

 

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示