.net jMail邮件发送(含抄送、密送、多发、日志记录)实例代码

jmail是一个第三方邮件操作组件,通常位于web服务器端,实现收邮件及发邮件功能(客户端用Foxmail这类就很好了)。可以利用它轻松实现发邮件、抄送、密送、多发、日志记录及收邮件功能。本章要讲的,就是:发邮件、抄送、密送、多发、日志记录。

一、组件准备
下载JMail44_pro并安装(记下安装路径)

找到安装路径,将其中的jmail.dll复制到项目中

二、核心发送代码
新建MailAPI.cs,并输入以下代码

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using jmail;
using System.IO;

namespace JmailDemo
{
    public class MailAPI
    {
        /// <summary>
        /// 邮件发送
        /// </summary>
        /// <param name="zt">主题</param>
        /// <param name="zw">正文</param>
        /// <param name="getMail">收件人地址</param>
        /// <param name="fromMail">发件人地址,多个地址间用英文逗号或分号隔开</param>
        /// <param name="csMail">抄送人地址,多个地址间用英文逗号或分号隔开</param>
        /// <param name="msMail">密送人地址,多个地址间用英文逗号或分号隔开</param>
        /// <param name="fjMail">附件服务器目录,多个服务器端目录之间以英文逗号或分号隔开</param>
        public void Send(string zt, string zw, string getMail, string fromMail, string csMail, string msMail, string fjMail)
        {
            jmail.Message jmessage = new Message();
            //Jmail系统配置 
            jmessage.Charset = "GB2312";
            jmessage.Encoding = "base64";
            //配置邮件信息 
            jmessage.Subject = zt.Trim();//邮件主题 
            jmessage.HTMLBody = zw;//邮件正文 
            //配置收件人信息 
            string[] sj = getMail.Split(',', ';');
            if (sj.Length > 1)
            {
                for (int i = 0; i < sj.Length; i++)
                {
                    jmessage.AddRecipient(sj[i], "", "");//收件人邮箱地址
                }
            }
            else
            {
                jmessage.AddRecipient(sj[0], "", "");
            }
            //配置抄送人信息 
            string[] cs = csMail.Split(',', ';');
            if (cs.Length > 1)
            {
                for (int i = 0; i < cs.Length; i++)
                {
                    jmessage.AddRecipientCC(cs[i]);
                }
            }
            else
            {
                jmessage.AddRecipient(cs[0], "", "");
            }
            //配置密送人信息
            string[] ms = msMail.Split(',', ';');
            if (ms.Length > 1)
            {
                for (int i = 0; i < ms.Length; i++)
                {
                    jmessage.AddRecipientBCC(ms[i]);
                }
            }
            else
            {
                jmessage.AddRecipient(ms[0], "", "");
            }
            //配置发件人信息 
            jmessage.ReplyTo = fromMail;//指定收件人回复的,所回复到的地址 
            jmessage.From = fromMail;//邮件发件人的邮箱地址 
            jmessage.FromName = "Test!";//邮件发件人显示的姓名 
            jmessage.MailServerUserName = fromMail;//用户名身份验证 
            jmessage.MailServerPassWord = "password";//发送邮件在服务器中的密码 
            //配置附件 
            string[] fj = fjMail.Split(',', ';');
            if (fj.Length > 1)
            {
                for (int i = 0; i < fj.Length; i++)
                {
                    jmessage.AddAttachment(fj[i],true,null);
                }
            }
            else
            {
                jmessage.AddRecipient(sj[0], "", "");
            }
            //配置追加信息
            jmessage.AppendHTML("<a href='http://www.jb51.net'>此邮件发送者</a>");
            //发送邮件 
            for (int i = 0; i < sj.Length; i++)
            {
                jmessage.Send("smtp.qq.com", false);//发送邮件服务器 
            }
            //配置jmail日志
            jmessage.Logging = true;
            using (StreamWriter sw = new StreamWriter("E:\\log.txt", true))
            {
                sw.Write(jmessage.Log);
                sw.Close();
            }
            jmessage.Close();//邮件发送完毕,关闭邮件发送状态 
        }
    }
}

说明:
1)在//配置收件人信息//配置抄送人信息//配置密送人信息//配置附件 这四处用if...else...是为解决单邮件发送和多邮件发送的问题,设成**.length>0这个条件也行,但如果这样做,比如:没有抄送人时,cs长度为1,cs[0]是因为没有这个邮箱地址才没有发送出去;

2)配置jmail邮件日志 一定要写到发送邮件的后面,且jmessage.Logging = true;和sw.Write(jmessage.Log);一定要同时使用;

3) 日志记录到文件 E:\\log.txt 中,要选存在,用log4net也行;

4) 当出报错:the message was undeliverable.all servers failed to receive the message时,原因为smtp服务器不支持,更换smtp服务器,以前用163的没问题,但现在用163的不行了。

三、调用发送代码:
新建Mail.aspx,添加一个服务端按钮,在其单击事件中写以下代码:

代码如下:

protected void Button1_Click(object sender, EventArgs e)
        {
            MailAPI sendMail = new MailAPI();
            string fj = Server.MapPath("files/JSON.rar");
            //sendMail.Send("这是主题", "这是正文", "这是收件人邮箱列表", "这是发件人邮箱地址", "抄送人邮箱列表", "密件人邮箱列表", "附件服务器地址列表");
            sendMail.Send("这是主题", "这是正文", "aaa@163.com,bbb@qq.com", "ccc@qq.com", "ddd@163.com,eee@qq.com", "", fj);
            //各列表之间以 英文状态的逗号分分号隔开
        }

(0)

相关推荐

  • Jmail发送邮件工具类分享

    好久没更新博客了,实在是拖延症严重啊,好可怕,先更新个工具类吧,之前写的发送邮件的小工具,话不多说上代码 import lombok.extern.slf4j.Slf4j; import java.util.Properties; import javax.mail.*; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.intern

  • asp jmail发邮件 详细解析第1/2页

    发个个比较详细的asp与jmail 实现发送邮件的代码,前一段时间有发过一个简单的JMAIL邮件发邮件的代码,今天就把这个代码做一个具体的注解,并增加了另外两个格式的代码,并举几个简单的例子: 首先是jmail.smtpmail的核心代码:   复制代码 代码如下: <%   Set jmail = Server.CreateObject("JMAIL.SMTPMail") '创建一个JMAIL对象   jmail.silent = true 'JMAIL不会抛出例外错误,返回的

  • Jmail组件发送邮件之绝对能用的函数

    大致如下: 1,POP3对象,是对POP3邮件接收服务器的操作.2,Messages对象,是有关邮件集合的对象.3,Message对象,是有关邮件的对象,其是Jmail组件最常用的对象,能发送邮件信息,也能接收邮件信息.4,Header对象,是与邮件头相关的对象.5,Recipients对象,是有关接收邮件集合的对象.6,Recipient对象,是有关接收邮件的对象.7,Attachments对象,是有关邮件附件集合的对象.8,Attachment对象,是有关邮件附件的对象.9,MailMerg

  • ASP用JMail、CDO发送邮件

    前一段时间有发过一个简单的JMAIL邮件发邮件的代码,今天就把这个代码做一个具体的注解,并增加了另外两个格式的代码,并举几个简单的例子: 首先是jmail.smtpmail的核心代码:  程序代码 <%   Set jmail = Server.CreateObject("JMAIL.SMTPMail")   '创建一个JMAIL对象   jmail.silent = true   'JMAIL不会抛出例外错误,返回的值为FALSE跟TRUE   jmail.logging = 

  • Jmail发送邮件与带附件乱码解决办法分享

    Jamil发送邮件的具体用法: 首先,我们要先下载Jamil.dll的组件,然后添加引用using jmail,然后再本机或者服务器上注册一下 将jmail.dll拷贝到服务器的system32目录下,开始-运行-cmd-输入regsvr32 jmail.dll,注册成功,然后写代码 代码如下(方法) 复制代码 代码如下: using jmail;    protected void sendMail(String sender, String senderMail, String receiv

  • Jmail 图文安装教程 asp在线发送邮件组件

    常用组件主要包括Aspjpeg.Jmail.LyfUpload.动易.ISAPI_ReWrite等,本文就仅说这5种,其他类型组件可以根据需要安装,安装方法以此类推. 下载Jmail,现在免费版本的最高版是Jmail4.5,点击后面的链接下载:点此下载JMail4.5: 下载解压到任意目录,或者直接执行JMail45_free.msi: 执行后开始安装,出现安装界面如下图点击Next先选择"I accept the license agreement" ,再点击Next  出于安全考虑

  • asp+JMAIL实现发送邮件

    本文利用asp和JMAIL实现了发送邮件,大家是不是很好奇这到底是怎么实现的呐,和小编一起一探究竟吧! Global.asa文件 什么是Global.asa 文件?它其实是一个可选文件,程序编写者可以在该文 件中指定事件脚本,并声明具有会话和应用程序作用域的对象.该文件的内容不是用来给用户显示的,而是用来存储事件信息和由应用程序全局使用的对象.该 文件的名称必须是 Global.asa 且必须存放在应用程序的根目录中.每个应用程序只能有一个 Global.asa 文件.内容如下: <script

  • Jmail发邮件的例子

    在Asp程序中用Jmail发邮件的比较多,主要是因为多数虚拟主机支持他,其它的支持的较少. 下面是一个Jmail发邮件的例子代码:  如果您在自己的机器上试,请下载 Jmail.dll ,下载解压后,双击Setup.bat 即可完成安装!  复制代码 代码如下: <% On error resume next Dim JMail, contentId Set JMail = Server.CreateObject("JMail.Message")  JMail.Charset =

  • .net jMail邮件发送(含抄送、密送、多发、日志记录)实例代码

    jmail是一个第三方邮件操作组件,通常位于web服务器端,实现收邮件及发邮件功能(客户端用Foxmail这类就很好了).可以利用它轻松实现发邮件.抄送.密送.多发.日志记录及收邮件功能.本章要讲的,就是:发邮件.抄送.密送.多发.日志记录. 一.组件准备下载JMail44_pro并安装(记下安装路径) 找到安装路径,将其中的jmail.dll复制到项目中 二.核心发送代码新建MailAPI.cs,并输入以下代码 复制代码 代码如下: using System;using System.Coll

  • vue发送websocket请求和http post请求的实例代码

    先给大家介绍下vue发送websocket请求和http post请求 直接上代码: pdf.vue <script> import SockJS from 'sockjs-client'; import Stomp from 'stompjs'; import qs from "qs" export default { name: "pdf", data() { return { newsData: [], tagGuid_mx: "&quo

  • 深入Lumisoft.NET实现邮件发送功能的方法详解

    在前面的一些文章中,有介绍过DotNet内置SMTP类的邮件发送功能,附件.嵌入图片的模式都有介绍,本文继续介绍Lumisoft.NET这个非常优秀的开源组件,用该组件来设计开发邮件工具,将变得更加方便,功能更加强大.网上很多文章基本介绍如何使用该组件来收取邮件较多,较少介绍使用该组件做邮件发送功能的.本文主要探寻使用该组件实现邮件的发送功能,邮件发送有两种方式,一种是不用发件人即可发送邮件,一种是使用发件人账户密码和SMTP服务器来实现邮件发送的,本文分别对这两种方式进行介绍. 组件下载地址:

  • php带抄送和密件抄送的邮件发送方法

    本文实例讲述了php带抄送和密件抄送的邮件发送方法.分享给大家供大家参考.具体分析如下: 程序中用到了php的mail函数,该函数定义如下: bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] ) 如果邮件发送成功返回True,否则返回False <html> <head> <ti

  • C++实现含附件的邮件发送功能

    C++实现邮件发送程序在vs2013测试通过,一共3个文件,发邮件的程序封装为Csmtp 类. 1.测试用的主函数 // #include "Csmtp.h" #pragma comment(lib, "Kernel32.lib") int main() { Csmtp mail( 25, "smtp.126.com", "username@126.com",// 来源邮箱 "pwd", "use

  • 基于JavaMail的Java实现复杂邮件发送功能

    上一篇文章 基于 JavaMail 的 Java 邮件发送:简单邮件发送 讲解了邮件的基本协议,JavaMail组件,创建并发送一封简单邮件的详细步骤.本文将介绍如何创建并发送一封包含图片和附件的复杂邮件. 一封复杂的邮件内容可以看做是由很多节点(或者可以说是"片段"/"部分"/"零件")组成,文本.图片.附件等都可以看成是邮件内容中的一个节点.这些节点之间又可以相互关联组合成一个节点.最终组合成一个大节点就是邮件的正文内容. 完整代码演示: p

  • 基于JavaMail的Java实现简单邮件发送功能

    电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等.但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.本文将简单介绍如何通过 Java 代码来创建电子邮件,并连接邮件服务器发送邮件. 1. 电子邮件协议 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP.其中邮件的创建和发送只需要用到 SMTP协议,所以本文也只会涉及到SMTP协议.SMTP 是

  • Spring Boot整合邮件发送与注意事项

    什么是Spring Boot Spring Boot是一个框架,其设计目的是简化Spring应用的初始搭建配置以及开发过程.该框架使用了特定的配置方式,从而使开发人员不在需要定义样板化的配置. Spring Boot的好处 1.配置简单: 2.编码简单: 3.部署简单: 4.监控简单: 概述 Spring Boot下面整合了邮件服务器,使用Spring Boot能够轻松实现邮件发送:整理下最近使用Spring Boot发送邮件和注意事项: Maven包依赖 <dependency> <g

  • JavaWeb实现邮件发送功能

    基于JavaWeb的邮件发送功能(多附件),供大家参考,具体内容如下 本次学习主要目的是为了测试由QQ邮箱发送到任意一个有效邮箱的功能实现,附带多个附件.学习者可以借鉴其他邮箱的格式,梳理一下要写的内容.项目把文件内容放到了MimeMessage 邮件对象里,其中包含了如发件人.收件人.抄送人.邮件主题.邮件内容.邮件时间和邮件附件等一些内容. 项目中遇到的问题: 1.在执行到 File file = new File("D:\Chat_Software\sky.JPG");时出现错误

  • SpringBoot实现邮件发送功能的姿势分享

    目录 前言 I. 项目环境 1. 项目依赖 2. 配置 II. 邮件发送 1. 简单文本邮件发送 2. html发送 3. 添加附件 4. Freemaker模板 5. 测试与小结 III. 不能错过的源码和相关知识点 0. 项目 总结 前言 邮件发送,在实际的项目开发中,可能用的不是特别多,如果没有特定的需求,相信也没有多少小伙伴会特意的去关注,那么如果现在我们希望针对项目做一个异常的报警系统,当出现异常的时候,可以向指定的小伙伴发送邮件提醒,那么让我们来实现这个功能,可以怎么办呢? 这里介绍

随机推荐