using System.Net.Mail;
using System.Net; public class EmailEntity
{
private MailMessage mm; /// <summary>
/// 发送邮件
/// </summary>
public void sendMessage()
{ //指定发件人的邮箱地址
MailAddress fromAddress = new MailAddress("abc@163.com");
//指定收件人的邮箱地址
MailAddress toAddress = new MailAddress("efg@qq.com");
//创建邮件对象
mm = new MailMessage(fromAddress, toAddress);
//添加一个密送的邮件地址
mm.Bcc.Add(new MailAddress("xiuxiu@qq.com"));
//添加一个抄送的邮件地址
mm.CC.Add(new MailAddress("me@qq.com"));
//指定邮件标题的编码格式
mm.SubjectEncoding = Encoding.UTF8;
//设置邮件标题
mm.Subject = "我是标题";
//指定邮件正文编码
mm.BodyEncoding = Encoding.UTF8;
//指定邮件正文是否text/html类型
mm.IsBodyHtml = true;
//设置邮件正文内容
mm.Body = "<span style='color:#ff0000;font-weight:bold;'>我爱秀秀!</span>";
//创建附件
Attachment file = new Attachment(AppDomain.CurrentDomain.BaseDirectory+"xiuxiu.jpg");
//设置附件的创建日期
file.ContentDisposition.CreationDate = DateTime.Now;
//设置附件的类型
file.ContentType = new System.Net.Mime.ContentType("image/jpeg;charset=UTF-8");
//将附件添加到邮件中
mm.Attachments.Add(file); //指定邮件发送服务器的地址和端口号
SmtpClient sc = new SmtpClient("smtp.163.com", );
//指定发件人的身份验证信息
sc.Credentials = new NetworkCredential("abc", "");
//sc.Send(mm);
//注册异步发送事件
sc.SendCompleted += new SendCompletedEventHandler(sc_SendCompleted);
//开始执行异步发送邮件
sc.SendAsync(mm, null);
}
//异步发送邮件完成时处理事件
void sc_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
if (mm != null)
{
mm.Dispose();//释放资源
}
if (e.Cancelled)
{
Console.WriteLine("用户已取消!");
}
else if (e.Error != null)
{
Console.WriteLine("发送失败,原因如下:" + e.Error.Message);
}
else
{
Console.WriteLine("发送成功!");
}
}
}
 1 import java.util.Date;
2 import java.util.Properties;
3 import javax.mail.Authenticator;
4 import javax.mail.PasswordAuthentication;
5 import javax.mail.Message.RecipientType;
6 import javax.mail.MessagingException;
7 import javax.mail.Session;
8 import javax.mail.Transport;
9 import javax.mail.internet.AddressException;
10 import javax.mail.internet.InternetAddress;
11 import javax.mail.internet.MimeMessage;
12 import javax.mail.internet.MimeMultipart;
13
14 /**
15 * 邮件实体类,封装了有关发送 邮件的方法。
16 * @author xxxxxx
17 *
18 */
19 public class EmailEntity {
20
21 private MimeMessage msg;
22
23 /**
24 * 初始化邮件实体
25 *
26 * @param fromDomin
27 * 发件人邮件服务器域名,如:163.com、qq.com
28 * @param userName
29 * 发件人用户名,如:qmail、20082345
30 * @param password
31 * 发件人密码
32 * @param toAddress
33 * 收件人邮箱地址,如:200712345@qq.com
34 */
35 public EmailEntity(String fromDomin, String userName, String password) {
36 Properties p = new Properties();
37 //设置邮件发送服务器的地址
38 p.setProperty("mail.host", "smtp." + fromDomin);
39 //设置使用权限验证
40 p.setProperty("mail.smtp.auth", "true");
41 //设置用户身份验证凭据
42 Session ses = Session.getDefaultInstance(p, new MyAuthenticator(userName, password));
43 //ses.setDebug(true);//设置是否出现回显信息
44 //创建邮件实体
45 msg = new MimeMessage(ses);
46 try {
47 //设置发件人邮箱地址
48 msg.setFrom(new InternetAddress(userName + "@" + fromDomin));
49 } catch (AddressException e) {
50 e.printStackTrace();
51 } catch (MessagingException e) {
52 e.printStackTrace();
53 }
54 }
55
56 /**
57 * 发送消息
58 *
59 * @param title
60 * 邮件标题
61 * @param content
62 * 邮件正文
63 * @param type
64 * 正文的类型,如:text/html、text/plain
65 * @return
66 */
67 public boolean sendMessage(String toAddress, String title, String content, String type) {
68
69 try {
70 //设置发件人邮箱地址
71 msg.setRecipient(RecipientType.TO, new InternetAddress(toAddress));
72 //设置邮件发送日期
73 msg.setSentDate(new Date());
74 //设置邮件标题
75 msg.setSubject(title);
76 //设置邮件正文
77 msg.setContent(content, type);
78 //开始发送邮件
79 Transport.send(msg);
80 return true;
81 } catch (MessagingException ex) {
82 ex.printStackTrace();
83 return false;
84 }
85 }
86
87 /**
88 * 发送带附件的邮件
89 * @param toAddress 收件人的邮箱地址,如bob@126.com
90 * @param title 邮件标题
91 * @param content 邮件正文,包括附件
92 * @param type 邮件正文的类型
93 * @return
94 */
95 public boolean sendEmailWithAttachment(String toAddress, String title, MimeMultipart content, String type) {
96 try {
97 msg.setRecipient(RecipientType.TO, new InternetAddress(toAddress));
98 msg.setSentDate(new Date());
99 msg.setSubject(title);
100 msg.setContent(content);
101 Transport.send(msg);
102 return true;
103 } catch (MessagingException ex) {
104 ex.printStackTrace();
105 return false;
106 }
107 }
108 }
109
110 //用户身份验证凭据类
111 class MyAuthenticator extends Authenticator {
112
113 private String _userName;
114 private String _password;
115
116 public MyAuthenticator(String userName,String password){
117 this._userName = userName;
118 this._password = password;
119 }
120
121 @Override
122 public PasswordAuthentication getPasswordAuthentication() {
123 //返回使用了用户名和密码的身份验证凭据
124 return new PasswordAuthentication(_userName, _password);
125 }
126 }

经过测试,均测试成功!如下:

使用C#和Java发送邮件(转载)的更多相关文章

  1. Java-Runoob-高级教程:Java 发送邮件

    ylbtech-Java-Runoob-高级教程:Java 发送邮件 1.返回顶部 1. Java 发送邮件 使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 Java ...

  2. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序

    如何用javac 和java 编译运行整个Java工程 (转载)  http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...

  3. Java发送邮件初窥

    一.背景 最近朋友的公司有用到这个功能,之前对这一块也不是很熟悉,就和他一起解决出现的异常的同时,也初窥一下使用Apache Common Email组件进行邮件发送. 二.Java发送邮件的注意事项 ...

  4. Java发送邮件,所遇到的常见需求

    明天要做关于发送邮件的接口,虽然我之前已用Java Mail做过许多关于邮件的发送.但同事说有点难点,虽我还不知难点在哪,还是要复习下.凡事预则立,不预则废嘛~ 所需的包: Java Mail : 目 ...

  5. 用java发送邮件(黄海已测试通过)

    /** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...

  6. Java发送邮件(带附件)

    实现java发送邮件的过程大体有以下几步: 准备一个properties文件,该文件中存放SMTP服务器地址等参数. 利用properties创建一个Session对象 利用Session创建Mess ...

  7. 用Java发送邮件

    要用Java发送邮件,除过JDK本身的jar包之外,还需要两个额外的jar包:JavaMail和JAF.当然,如果你使用的JavaEE的JDK,那就不用单独去网上下载了,因为JavaEE的JDK中已经 ...

  8. Java发送邮件时标题和发件人乱码

    最近碰到一个问题,Java发送邮件时,查看邮箱结果,发件人及邮件标题正文全部乱码 通过翻阅资料,原因及解决方法如下: // Set Subject: 头字段 message.setSubject(Mi ...

  9. Java - 31 Java 发送邮件

    Java 发送邮件 使用Java应用程序发送E-mail十分简单,但是首先你应该在你的机器上安装JavaMail API 和Java Activation Framework (JAF) . 你可以在 ...

  10. Java发送邮件--web.xml配置,Java代码配置

    前言:我目前总结的使用java发送邮件的方式有两种,分别是在spring框架xml配置文件使用bean标签,另一种方法是把发送功能封装成一个对象,废话不多说上代码, 边看代码边讲解,希望对需要的人能有 ...

随机推荐

  1. 交通部道路运输车辆卫星定位系统部标JTT808、809、796标准大全

    无论是开发GPS设备硬件还是开发应用软件,都要面临一个标准,这个标准就是国家交通部发布的道路运输车辆卫星定位系统部标认证标准,它涵盖了GPS硬件设备参数.功能标准,也包括了设备上传到应用平台的协议标准 ...

  2. 《深入理解mybatis原理2》 Mybatis初始化机制详解

    <深入理解mybatis原理> Mybatis初始化机制详解 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章将通过以下几点详细介绍MyBatis的初始化过程 ...

  3. spoj-SAMER08A-最短路

    SAMER08A - Almost Shortest Path #graph-theory #shortest-path #dijkstra-s-algorithm Finding the short ...

  4. write 系统调用耗时长的原因

    前一阵子公司一部门有人叫帮忙调查,说他们write系统调用基本上是个位数微秒就返回,或者说几十us,但偶尔出现几次write系统调用达到几百毫秒和情况.大家都知道,通过vfs进行write,都是写写到 ...

  5. 普通for循环遍历LinkedList弊端

    java开发过程中,用到的最多的List集合就属ArrayList与LinkedList.对于ArrayList的遍历,通常是下面的方法: public static void main(String ...

  6. MVC,MVVM,MVP等设计模式的分析

    从Script到Code Blocks.Code Behind到MVC.MVP.MVVM 三个模式按照大致的历史进程将这些概念进行划分: Script Code Blocks.Code Behind ...

  7. 【Python】装饰器理解

    以下文章转载自:点这里 关于装饰器相关的帖子记录在这里: 廖雪峰, thy专栏, stackflow Python的函数是对象 简单的例子: def shout(word="yes" ...

  8. js自定义对象.属性 笔记

    <一> js自定义对象 一,概述 在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtabl ...

  9. Loadrunner 11检查点使用方法总结

    在使用Loadrunner 11进行性能测试中,有时需要对性能测试中的功能是否全部正确进行判断.这里就需要用到“检查点”,本文总结了常用三种协议下检查点的使用方法,希望阅读本文后的小伙伴们能够掌握其使 ...

  10. java集合运算:求交集,并集,集合差

    今天突然想用Java实现如何用集合实现交集,并集和差集的运算了!主要是看Python语言的时候想起来的. 实现主要使用的Set集合,Set集合的特点是集合内的元素不可重复. 具体代码如何: packa ...