1.发邮件:
package cn.itwoody.mail;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendMailExample {
? public static void main (String args[]) throws
Exception {
?? ?
??? String host
= "smtp.sina.com";??
//发件人使用发邮件的电子信箱服务器
??? String from
=
"username@sina.com";???
//发邮件的出发地(发件人的信箱)
??? String to =
"username@163.com";??
//发邮件的目的地(收件人信箱)
??? // Get
system properties
??? Properties
props = System.getProperties();
??? // Setup
mail server
???
props.put("mail.smtp.host", host);
??? // Get
session
???
props.put("mail.smtp.auth", "true"); //这样才能通过验证
???
MyAuthenticator myauth = new MyAuthenticator("username@sina.com",
"password");
??? Session
session = Session.getDefaultInstance(props, myauth);
???
//session.setDebug(true);
??? // Define
message
??? MimeMessage
message = new MimeMessage(session);
???
??? // Set the
from address
???
message.setFrom(new InternetAddress(from,"你的昵称"));
??? // Set the
to address
???
message.addRecipient(Message.RecipientType.TO,new
InternetAddress(to));
??? // Set the
subject
???
message.setSubject("测试程序!");
??? // Set the
content(文本格式)
???
message.setText("这是用java写的发送电子邮件的测试程序!");
???
??? // Set the
content(非文本格式)
??? //
message.setContent("Hello", "text/plain");
???
message.saveChanges();
?
???
Transport.send(message);
???
? }
}?
package cn.itwoody.mail;
import javax.mail.PasswordAuthentication;
public class MyAuthenticator extends javax.mail.Authenticator
{
??? private
String strUser;
??? private
String strPwd;
??? public
MyAuthenticator(String user, String password) {
?????
this.strUser = user;
?????
this.strPwd = password;
??? }
??? protected
PasswordAuthentication getPasswordAuthentication() {
?????
return new PasswordAuthentication(strUser, strPwd);
??? }
}
2.收邮件
package cn.itwoody.mail;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
public class ReceiveMailExample {
???
??? public
static void main(String[] args) throws MessagingException,
IOException {
???
??? // TODO
Auto-generated method stub
???
??? String
host="pop.sina.com";
???
???
???
??? //Get system
properties
???
??? Properties
props = System.getProperties();
???
???
???
??? Session
session = Session.getDefaultInstance(props, null);
???
???
???
??? Store
store=session.getStore("pop3");
???
???
???
???
store.connect(host, "username@sina.com","password");
???
???
???
??? Folder
folder=store.getFolder("INBOX");
???
???
???
??? //open by
read
???
???
folder.open(Folder.READ_ONLY);
???
???
???
??? Message
messages[]=folder.getMessages();
???
???
???
??? for(int
i=0;i<messages.length;i++){<br>
???
???
???
System.out.println("sender:"+messages[i].getFrom()[0]+" -
subject:"+messages[i].getSubject());
???
???
???
BufferedReader reader = new BufferedReader(new
InputStreamReader(messages[i].getInputStream()));
???
???
??? String
newLine="";
???
???
???
while((newLine=reader.readLine())!=null){
???
???
???
???
System.out.println(newLine);
???
???
??? }
???
???
???
System.out.println("----------------------------------------------------------------------");
???
??? }
???
???
??? }
}
六、常见异常
com.sun.mail.smtp.SMTPSendFailedException:?553?authentication?is?required,smtp8,wKjADxuAyCAfmnZE8BwtIA==.32705S2
?at?com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
?at?com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
?at?com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
?at?javax.mail.Transport.send0(Transport.java:169)
?at?javax.mail.Transport.send(Transport.java:98)
这样的异常,要求你必须进行授权校验,它的目的就是阻止他人任意乱发邮件,也算是为了减少垃圾邮件的出现吧。这时候,我们就要使用
在用户名和密码都没有问题的情况下,如果代码抛出javax.mail.AuthenticationFailedException异常,先用OutLook测试一下看能否进行正常的收发邮件,
有时信箱如果是新注册的话,邮件的服务商默认刚注册的帐号是不能使用pop3的。例如163.com在我进行代码测试时,刚刚注册的帐号是没有权限使用该功能的,所以就会抛出上述的异常。
还有,要注意from的email地址和Authenticator类中验证的用户名是一致的,要不也会出错.
分享到:
相关推荐
javaMail API 跟 jar包
JavaMail API简介;SMTP;POP3;JavaMail API简介;SMTP;POP3
JavaMail API核心类 做传送邮件,实用
JavaMail_API基本原理,JavaMail_API,JavaMail_API简介
书名:JavaMail API基础教程(电子书) 格式:HTML 作者:IBM 目录 1.教程提示 2.引入JavaMail API 3.对相关协议的回顾 4.安装JavaMail 5.对核心类的概览 6.JavaMail API的使用 7.用SearchTerm(搜索条件)搜索 8.练习...
javaMail API和JAR包含:mail.jar及里面Message类、Transport类、Store类等api具体说明
JavaMail API 1.4.7 官网下载 最新版
mail.jar activation.jar JavaMail API的两个jar文件
JavaMail API详解.txt JavaMail API详解.txt JavaMail API详解.txt JavaMail API详解.txt
一、JavaMail API简介 JavaMail API是读取、撰写、发送电子信息的可选包。我们可用它来建立如Eudora、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA)。而不是像sendmail或者其它的...
JavaMail API是读取、撰写、发送电子信息的可选包。我们可用它来建立如Eudora、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA)。而不是像sendmail或者其它的邮件传输代理(Mail ...
javamail中文API文档 方法解释详细。
JavaMail API是读取、撰写、发送电子信息的可选包。我们可用它来建立如Eudora、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA)。而不是像sendmail或者其它的邮件传输代理(Mail ...
博文链接:https://lijinyan3000.iteye.com/blog/187396
这份资料详解JavaMail APIJavaMail API,希望能给有志成为IT人才一点帮助! Thank you for your use!
JavaMail API,AnroidMail,JavaMail入门,开发mail必备
包含JavaMail1.4.5、JAF1.1.1、JavaMail API文档英文版,以及JavaMailAPI中文详解
JavaMail API详解
包含javamail使用示例, API文档与源代码。