用Java自动发邮件

本文介绍如何使用Java进行邮件发送,包括设置SMTP服务器、配置身份验证、发送简单邮件及带附件的邮件等内容。针对公司端口限制问题,给出了具体解决方案。

1.新建一个Java工程,SendMail。

2.引入三个jar。

在工程中新建文件夹lib,拷入三个jar,在properties->java build path->librarys导入->order and export√上。

commons-email-1.2.jar

activation-1.1.jar

mail-1.4.jar(一开始没引入这个jar,结果报错,java.lang.NoClassDefFoundError: javax.mail.Authenticator)

3.新建一个类SendMail.java

package com.ibm.docs.viewer;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;

public class SendMail {
	public SendMail() {
	}

	public static void main(String[] args) {
		send();
		System.out.println();
	}

	public static void send() {
		SimpleEmail email = new SimpleEmail();
		email.setTLS(true);
		email.setHostName("d23m0037.cn.ibm.com");
		email.setAuthentication("XXX@cn.ibm.com", "XXXX"); // 用户名和密码
		try {
			email.addTo("XXXX@qq.com"); // 接收方
			email.setFrom("XXXX@cn.ibm.com"); // 发送方
			email.setSubject("Java Mail Test"); // 标题
			email.setMsg("Just a simple send test ."); // 内容
			email.send();
		} catch (EmailException e) {
			e.printStackTrace();
		}
	}
}
4.运行。

之前用的163,gmail,新浪的邮件服务器均报错。

Sending the email to the following server failed

网上一查应该是公司的端口25被封了,

开始-运行-cmd- 键入命令 netstat -an  只能看到本机的开放端口
测试的时候,发现 telnet d23m0037.cn.ibm.com 25是通的,说明服务器好使,成功收到邮件。

5.发送带附件的邮件。

package com.ibm.docs.viewer;

import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;

public class SendAttachment {

	public static void main(String[] args) throws EmailException {
		MultiPartEmail email = new MultiPartEmail();

		// 通过IBM Server 发送邮件
		email.setTLS(true);
		email.setHostName("d23m0037.cn.ibm.com"); // 设定smtp服务器
		email.setAuthentication("XXX@cn.ibm.com", "XXX@2012"); // 用户名和密码

		EmailAttachment attachment = new EmailAttachment();
		attachment.setPath("C:\\Documents and Settings\\Administrator\\My Documents\\Downloads\\result.txt");
		attachment.setDisposition(EmailAttachment.ATTACHMENT);// 设定附件的方式(内嵌,附件)
		attachment.setDescription("result");
		attachment.setName("result.txt"); // 附件的文件名

		email.addTo("XXX@qq.com"); // 接收方
		email.setFrom("XXX@cn.ibm.com"); // 发送方
		email.setSubject("Java Mail Test"); // 标题
		email.setMsg("Just a simple send test ."); // 内容

		email.attach(attachment);
		email.send();
	}
}


之前也写过一个基于163的,一年前写的了,又忘了,该死!

现在记录下来,也许以后还可以用上。就可以代码重用了。O耶!

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值