一、使用telnet连接邮件服务器发送邮件
1)发送邮件smtp
步骤: 1、telnet smtp.163.com 25
2、ehlo xxxx
3、auth login
4、输入base64编码的用户名 直接复制可能因换行符会出错,所以尽量留下一个字符手动输入,手动回车换行。
5、输入base64编码的密码 同理
6、mail from: <15531155286@163.com> (冒号后面有空格)
7、rcpt to: <1124977589@qq.com> (冒号后面有空格)
8、data
9、subject:xxxx
10、from:15531155286@163.com
11、空一行 (必须空一行)
12、正文
13、. (必须以点结束)
2)接收邮件pop
步骤:1、telnet pop.163.com 110
2、user 用户名
3、pass 密码
4、stat (返回邮件统计信息)
5、retr 邮件编号 (列出邮件内容)
6、list 邮件编号 (列出邮件统计信息)
二、java编写的Mail
要求:mail.jar activation.jar
代码:
package com.hncj.Test;
import java.io.FileOutputStream;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
public class MailTest {
public static void main(String[] args) throws Exception{
Properties props = new Properties();
//发送服务器端口
props.setProperty("mail.transport.protocol", "smtp");
//服务器主机
props.setProperty("mail.smtp.host", "smtp.163.com");
//验证登录
props.setProperty("mail.smtp.auth", "true");
//与服务器的会话连接
Session session = Session.getInstance(props);
//debug模式下可以看到发送信息
session.setDebug(true);
//要发送的邮件
MimeMessage mesg = new MimeMessage(session);
//发信人
mesg.setFrom(new InternetAddress("xxxx@163.com"));
//收信人
mesg.setRecipient(Message.RecipientType.TO,new InternetAddress("xxxx@qq.com"));
mesg.setRecipient(Message.RecipientType.CC,new InternetAddress("xxxx@163.com"));//抄送一份可以防止被服务器误认为是垃圾邮件的问题
//邮件主题
mesg.setSubject("mymail");
//邮件主题
//文字部分
MimeBodyPart textPart = new MimeBodyPart();
textPart.setContent("hello <img src='cid:bk'/> this is an image", "text/html;charset=UTF-8");//解决邮件内容乱码问题
//图片部分
MimeBodyPart imagePart = new MimeBodyPart();
DataHandler handler = new DataHandler(new FileDataSource("src/代码.jpg"));
imagePart.setDataHandler(handler);
imagePart.setContentID("bk");
//文字图片的关联部分
MimeMultipart mainPart = new MimeMultipart();
mainPart.addBodyPart(textPart);
mainPart.addBodyPart(imagePart);
mainPart.setSubType("related");
//附件部分
MimeBodyPart attachmentPart = new MimeBodyPart();
DataHandler handler1 = new DataHandler(new FileDataSource("src/代码.jpg"));
attachmentPart.setDataHandler(handler1);
attachmentPart.setFileName(MimeUtility.encodeText(handler1.getName()));//解决附件名及中文乱码问题
//图片文本部分
MimeBodyPart textImagePart = new MimeBodyPart();
textImagePart.setContent(mainPart);
//总体部分
MimeMultipart finalPart = new MimeMultipart();
finalPart.addBodyPart(attachmentPart);
finalPart.addBodyPart(textImagePart);
finalPart.setSubType("mixed");
mesg.setContent(finalPart);
//发送时间
mesg.setSentDate(new Date());
mesg.saveChanges();
//保存到磁盘
mesg.writeTo(new FileOutputStream("e:/1.eml"));
//执行发送
Transport transport = session.getTransport();
transport.connect("xxx@163.com", "xxxx");
transport.sendMessage(mesg, mesg.getAllRecipients());
}
}