使用C#和Java发送邮件(转载)
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发送邮件(转载)的更多相关文章
- Java-Runoob-高级教程:Java 发送邮件
ylbtech-Java-Runoob-高级教程:Java 发送邮件 1.返回顶部 1. Java 发送邮件 使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 Java ...
- 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序
如何用javac 和java 编译运行整个Java工程 (转载) http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...
- Java发送邮件初窥
一.背景 最近朋友的公司有用到这个功能,之前对这一块也不是很熟悉,就和他一起解决出现的异常的同时,也初窥一下使用Apache Common Email组件进行邮件发送. 二.Java发送邮件的注意事项 ...
- Java发送邮件,所遇到的常见需求
明天要做关于发送邮件的接口,虽然我之前已用Java Mail做过许多关于邮件的发送.但同事说有点难点,虽我还不知难点在哪,还是要复习下.凡事预则立,不预则废嘛~ 所需的包: Java Mail : 目 ...
- 用java发送邮件(黄海已测试通过)
/** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...
- Java发送邮件(带附件)
实现java发送邮件的过程大体有以下几步: 准备一个properties文件,该文件中存放SMTP服务器地址等参数. 利用properties创建一个Session对象 利用Session创建Mess ...
- 用Java发送邮件
要用Java发送邮件,除过JDK本身的jar包之外,还需要两个额外的jar包:JavaMail和JAF.当然,如果你使用的JavaEE的JDK,那就不用单独去网上下载了,因为JavaEE的JDK中已经 ...
- Java发送邮件时标题和发件人乱码
最近碰到一个问题,Java发送邮件时,查看邮箱结果,发件人及邮件标题正文全部乱码 通过翻阅资料,原因及解决方法如下: // Set Subject: 头字段 message.setSubject(Mi ...
- Java - 31 Java 发送邮件
Java 发送邮件 使用Java应用程序发送E-mail十分简单,但是首先你应该在你的机器上安装JavaMail API 和Java Activation Framework (JAF) . 你可以在 ...
- Java发送邮件--web.xml配置,Java代码配置
前言:我目前总结的使用java发送邮件的方式有两种,分别是在spring框架xml配置文件使用bean标签,另一种方法是把发送功能封装成一个对象,废话不多说上代码, 边看代码边讲解,希望对需要的人能有 ...
随机推荐
- PIL.Image与Base64 String的互相转换
https://www.jianshu.com/p/2ff8e6f98257 PIL.Image与Base64 String的互相转换 mona_alwyn 2018.01.18 19:02* 字数 ...
- 启用/禁用以太网的批处理,用于一个网卡切换本地网络和wifi使用(Win10)
注意下面时英文版上默认网络使用,同时接入了网线和wifi时,本地网络优先wifi. 所以禁用本地网络就会自动连接到wifi,启用本地网络,就会禁用wifi. 批处理支持 -y 参数,跳过用户输入y,代 ...
- 14.并发容器之ConcurrentHashMap(JDK 1.8版本)
1.ConcurrentHashmap简介 在使用HashMap时在多线程情况下扩容会出现CPU接近100%的情况,因为hashmap并不是线程安全的,通常我们可以使用在java体系中古老的hasht ...
- R读取一个数据框 Dataframe,删去其中的某一列
可以参考:http://blog.sina.com.cn/s/blog_80572f5d0101anxw.html
- ana3+opencv+TensorFlow+NVIDIAGPU 安装
http://blog.csdn.net/qq_30611601/article/details/79067982 这个博客写的挺完整的 当你发现你的anna下载的贼鸡儿的慢,你就需要使用清华的镜像网 ...
- Tree各种遍历实现
数据结构.算法及应用 张宪超主编 科学出版社 1. 数据结构的基本概念知识 数据结构的逻辑结构由数据节点和连接两个节点的边组成. 数据节点的数据类型:整型,实数型,布尔型,字符型,指针数据类型 结构的 ...
- C++复习10.对象的初始化拷贝析构函数
对象的初始化.拷贝构造和析构函数 20131002 构造函数.析构函数.赋值函数是类的基本函数.每一个类只有一个析构函数,但是可以有多个构造函数.多个赋值函数.一般如果类中没有显示的声明和定义上述函数 ...
- 【小米oj】找出单独的数字
题目链接:https://code.mi.com/problem/list/view?id=2&cid=0&sid=26251#codearea 描述 给出N个数字.其中仅有一个数字出 ...
- vue的v-model绑定数据问题
在我的项目中有一个这样的功能模块: 我们修改数据全是在前台的table中修改,然后把这个table的值带到后台.(理想:修改值后,点击确认值改变,点击取消值恢复原来的值)那么问题就来了: a)你修改值 ...
- 在关于原生js获取getAttribute如果是src的一点注意事项
最近抽空把seajs看完了 他们在fix代码的时候,写明在某浏览器下的情况和官方文档出处,这样有据可查.太赞了 顺便把我想要这段摘出来 可以直接dom.src,但是在ie6-7中是不支持的,并且在ge ...