📄 mailframe.java~57~
字号:
package javamail;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.mail.*;
import java.util.*;
import javax.mail.internet.*;
import java.io.*;
import javax.activation.*;
public class MailFrame extends JFrame {
}
public String host = "smtp.163.com";
public String username = "javamail";
public String password = "javamail";
public String mail_head_name = "mail header";
public String mail_head_value = "this is head of this mail";
public String mail_to = "mailto@163.com";
public String mail_from = "mailfrom@163.com";
public String mail_subject = "mail subject";
public String mail_body = "mail body";
JPanel contentPane;
JButton SendMail = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
JButton jButton4 = new JButton();
JButton jButton5 = new JButton();
JButton jButton7 = new JButton();
JButton jButton8 = new JButton();
JButton jButton9 = new JButton();
//Construct the frame
public MailFrame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
contentPane = (JPanel)this.getContentPane();
SendMail.setBounds(new Rectangle(73, 36, 133, 39));
SendMail.setActionCommand("SendMail");
SendMail.setText("SendMail");
SendMail.addActionListener(new MailFrame_SendMail_actionAdapter(this));
contentPane.setLayout(null);
this.setSize(new Dimension(530, 346));
this.setTitle("邮件发送示例");
jButton2.setText("ReceiveMail");
jButton2.addActionListener(new MailFrame_jButton2_actionAdapter(this));
jButton2.setBounds(new Rectangle(73, 105, 133, 39));
jButton2.setActionCommand("ReceiveMail");
jButton3.setText("jButton1");
jButton3.setBounds(new Rectangle(73, 167, 133, 39));
jButton4.setText("jButton1");
jButton4.setBounds(new Rectangle(73, 228, 133, 39));
jButton5.setBounds(new Rectangle(289, 105, 133, 39));
jButton5.setText("jButton1");
jButton7.setText("jButton1");
jButton7.setBounds(new Rectangle(289, 167, 133, 39));
jButton8.setBounds(new Rectangle(289, 228, 133, 39));
jButton8.setText("jButton1");
jButton9.setText("jButton1");
jButton9.setBounds(new Rectangle(289, 36, 133, 39));
contentPane.add(jButton3, null);
contentPane.add(jButton4, null);
contentPane.add(jButton2, null);
contentPane.add(SendMail, null);
contentPane.add(jButton5, null);
contentPane.add(jButton9, null);
contentPane.add(jButton7, null);
contentPane.add(jButton8, null);
}
//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
void SendMail_actionPerformed(ActionEvent e) {
try {
//获取系统环境
Properties props = new Properties();
//进行邮件服务器用户认证
Authenticator auth = new Email_Autherticator();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
//设置session,和邮件服务器进行通讯
Session session = Session.getDefaultInstance(props, auth);
MimeMessage message = new MimeMessage(session);
//设置邮件格式
message.setContent("Hello", "text/plain");
//设置邮件主题
message.setSubject(mail_subject);
//设置邮件正文
message.setText(mail_body);
//设置邮件标题
message.setHeader(mail_head_name, mail_head_value);
//设置邮件发送日期
message.setSentDate(new Date());
//设置邮件发送者的地址
Address address = new InternetAddress(mail_from, "test");
message.setFrom(address);
//如果要对邮件发送者进行多个参数的设置,可以用以下语句
// Address address[] = {new nternetAddress("sunxm@oaklet.co.jp","sunxmatoaklet"),new InternetAddress("firstsxm@hotmail.com","sunxmathotmail")};
// message.addFrom(address);
Address toAddress = new InternetAddress(mail_to); //设置邮件接收方的地址
message.addRecipient(Message.RecipientType.TO, toAddress);
// Address ccAddress = new InternetAddress("firstsxm@hotmail.com");//设置邮件抄送者的地址
// message.addRecipient(Message.RecipientType.CC,ccAddress);
Transport.send(message); //发送邮件
/* // to get a specific instance from the session for your protocol.pass along the sername and password
// (blank if unnecessary).send the message,and close the Connection;
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host,username,password);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
*/
System.out.println("send ok!");
}
catch (Exception ex) {
System.out.println("faild" + ex);
}
}
void jButton2_actionPerformed(ActionEvent e) {
//获取系统变量
Properties props = System.getProperties();
//进行邮件服务器用户认证
Authenticator auth = new Email_Autherticator();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
//建立session
Session session = Session.getDefaultInstance(props, auth);
Store store = session.getStore("pop3");
store.connect(host, username, password);
//在连接到邮件存储区之后,必须先打开一个文件夹,才能读取邮件
//文件夹,一般默认的是INDEX
Folder folder = store.getFolder("INBOX");
//READ_ONLY为打开方式
folder.open(Folder.READ_WRITE);
//从文件夹获取邮件信息
Message message[] = folder.getMessages();
//可以用两种方式去获得邮件信息,getContent()用来获得邮件的主体信息。
//而WriteTo()可以用来获得邮件的全部信息,包括头部信息
for (int i = 0; i < message.length; i++) {
String out_from_person = ( (InternetAddress) message[i].getFrom()[0]).
getPersonal();
String out_from_address = ( (InternetAddress) message[i].getFrom()[0]).
getAddress();
System.out.println("From:" + out_from_person + "\t");
System.out.println("Address:" + out_from_address + "\t");
String out_subject = message[i].getSubject();
System.out.println("Subject:" + out_subject + "\t");
//以下代码用来获得邮件的正文信息
Part messagePart = message[i];
Object out_content = messagePart.getContent();
if (out_content instanceof Multipart) {
messagePart = ( (Multipart) out_content).getBodyPart(0);
System.out.println("[ Multipart Message ]");
}
String out_content_type = messagePart.getContentType();
System.out.println("CONTENT:" + out_content_type);
if (out_content_type.startsWith("text/plain") ||
out_content_type.startsWith("text/html")) {
InputStream ipstm = messagePart.getInputStream();
BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));
String thisLine = bufreader.readLine();
while (thisLine != null) {
System.out.println("thisLine: " + thisLine);
thisLine = bufreader.readLine();
}
message[i].setFlag(Flags.Flag.DELETED, true); //最后删除服务器端的邮件
}
folder.close(true);
store.close();
}
}
class MailFrame_SendMail_actionAdapter implements java.awt.event.ActionListener {
MailFrame adaptee;
MailFrame_SendMail_actionAdapter(MailFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.SendMail_actionPerformed(e);
}
//此段代码用来进行服务器对用户的认证
public class Email_Autherticator extends Authenticator {
public Email_Autherticator() {
super();
}
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}
}
class MailFrame_jButton2_actionAdapter implements java.awt.event.ActionListener {
MailFrame adaptee;
MailFrame_jButton2_actionAdapter(MailFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
}
//获取系统环境
Properties props = new Properties();
//进行邮件服务器用户认证
Authenticator auth = new Email_Autherticator();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
//设置session,和邮件服务器进行通讯
Session session = Session.getDefaultInstance(props, auth);
MimeMessage message = new MimeMessage(session);
//设置邮件格式
message.setContent("Hello", "text/plain");
//设置邮件主题
message.setSubject(mail_subject);
//设置邮件正文
message.setText(mail_body);
Properties props = System.getProperties();
Authenticator auth = new Email_Autherticator();
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth","true");
Session session = Session.getDefaultInstance(props,auth);
Store store = session.getStore("pop3");
store.connect(host,username,password);
//连接到邮件存储区,并打开相应文件夹
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessages();
for (int i=0,n=message.length;i
{
//获得邮件的部分信息,如头部信息,送信人的署名,送信人的邮件地址
String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal();
String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress();
System.out.println("From:"+out_from_person+"\t");
System.out.println("Address:"+out_from_address+"\t");
String out_subject = message[i].getSubject();
System.out.println("Subject:"+out_subject+"\t");
//以下代码用来获取邮件的主体信息
Part messagePart = message[i];
Object out_content = messagePart.getContent();
if (out_content instanceof Multipart)
{
messagePart = ((Multipart)out_content).getBodyPart(0);
System.out.println("[ Multipart Message ]");
}
String out_content_type = messagePart.getContentType();
System.out.println("CONTENT:"+out_content_type);
if (out_content_type.startsWith("text/plain") | | out_content_type.startsWith("text/html"))
{
InputStream ipstm = messagePart.getInputStream();
BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));
String thisLine = bufreader.readLine();
while (thisLine != null)
{
System.out.println("thisLine: "+thisLine);
thisLine = bufreader.readLine();
}
}
//获取附件
Multipart mp = (Multipart)message[i].getContent();
for (int j=0,m=mp.getCount();j
{
System.out.println("***"+m+"***");
Part part = mp.getBodyPart(j);
String disposition = part.getDisposition();
if ((disposition != null) && ((disposition.equals(part.ATTACHMENT)) | | (disposition.equals(part.INLINE))))
{
//以下代码将获得的附件保存到当前目录下,以part.getFileName()为文件名,也既是附件的名称。
File filename = new File(part.getFileName());
for (int k=0;filename.exists();k++)
{
filename = new File(part.getFileName()+k);
}
FileOutputStream myFileoutputstream = new FileOutputStream(filename);
int chunk = part.getSize();//获得附件的大小,不一定很准确。
byte [] buffer = new byte[chunk];
InputStream instream = part.getInputStream();
instream.read(buffer,0,chunk);
myFileoutputstream.write(buffer,0,chunk);
instream.close();
myFileoutputstream.close();
}
}
System.out.println("------------------------------------------------------------");
message[i].setFlag(Flags.Flag.DELETED,true);
}
folder.close(true);
store.close();//关闭
}
catch(Exception ej2)
{
System.out.println(ej2);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -