java发送邮件

JAVA发送邮件(可以带附件)

可以直接复制代码使用,注意:使用的是126邮箱,要加入的包,主要是:activation.jar,mail.jar,并且要删除原来myeclipe里面的javaee5 library

然后添加里面的javaee.jar包到lib下面即可。

 

package com.tl.util;

import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
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;
/**
 * 发送邮件
 * @author Administrator
 *
 */
public class SendMail {
 static int port = 25;

 static String server = "smtp.126.com";  //发件人使用发邮件的电子信箱服务器

 static String from = "Admin<>";  //显示你的发件人  像这样的

 

 static String user = ""; //邮箱名

 static String password = "xxxx";  //邮箱密码

 public static void sendEmail(String email, String subject, String body,String filename) {
 try {
 Properties props = new Properties();
 props.put("mail.smtp.host", server);
 props.put("mail.smtp.port", String.valueOf(port));
 props.put("mail.smtp.auth", "true");
 Transport transport = null;
 Session session = Session.getDefaultInstance(props, null);
 transport = session.getTransport("smtp");
 transport.connect(server, user, password);
 MimeMessage msg = new MimeMessage(session);
 msg.setSentDate(new Date());
 InternetAddress fromAddress = new InternetAddress(from);
 msg.setFrom(fromAddress);
 InternetAddress[] toAddress = new InternetAddress[1];
 toAddress[0] = new InternetAddress(email);
 msg.setRecipients(Message.RecipientType.TO, toAddress);
 msg.setSubject(subject, "UTF-8"); 
 
 MimeMultipart multi = new MimeMultipart(); 
 BodyPart textBodyPart = new MimeBodyPart(); //第一个BodyPart.主要写一些一般的信件内容。 
 textBodyPart.setText(body); 
 // 压入第一个BodyPart到MimeMultipart对象中。 
 multi.addBodyPart(textBodyPart); 
 
 FileDataSource fds = new FileDataSource(filename); //必须存在的文档,否则throw异常。 
 BodyPart fileBodyPart = new MimeBodyPart(); //第二个BodyPart 
 fileBodyPart.setDataHandler(new DataHandler(fds)); //字符流形式装入文件 
 fileBodyPart.setFileName("report.txt"); //设置文件名,可以不是原来的文件名。 
 multi.addBodyPart(fileBodyPart); 
 // MimeMultPart作为Content加入message 
 msg.setContent(multi); 
 
 msg.setFileName(filename);
 msg.saveChanges();
 transport.sendMessage(msg, msg.getAllRecipients());
 } catch (NoSuchProviderException e) {
 e.printStackTrace();
 } catch (MessagingException e) {
 e.printStackTrace();
 }
 }

//测试

 public static void main(String[] args) {
  sendEmail("LOVE YOU","哈哈! 才做好的,这个是带附件的,我是来测试做的,收到邮件请回我,是否有附件呢?","d:/a.txt");
 }
}

 

 

 

发送邮件的原理:

1,邮件服务器:现在Internet很多提供邮件服务的厂商:sinasohu163等等他们都有自己的邮件服务器。这些服务器类似于我们的邮局。它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。

2,电子邮箱:就是我们通常说的E-mail地址,确切的说就是我们在邮件服务器上面申请的一个账号,邮件服务器就会为该帐号分配一定的空间,从而就可以使用了。

3,SMTP协议:(Simple Mail Transfer Protocal)称为简单邮件传输协议,可以说是一种通讯规则,监听25号端口,重要特点:邮件可以通过不同网络上的主机接力式传送。

详情:http://baike.baidu.com/view/5450.htm

 

4.POP协议简介 
POP的全称是 Post Office Protocol ,即邮局协议,用于电子邮件的接收,它使用TCP的110端口,现在常用的是第三版,所以简称为 POP3。 

采用的cs模式

 

5.IMAP协议简介 
IMAP是Internet Message Access Protocol的缩写,邮件下载服务,可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。

 

 

doc下面发送邮件:

1,smtp方式

开始---->运行---->cmd---->回车<enter>   ---------:<enter>就是回车的意思

telnet smtp.qq.com 25<enter>----------呼叫服务器

ehlo guoqianfang<enter>   ---------------主机的用户名

auth login<enter>             

YWFh<enter> --------------发送者账号的名字(必须是加密过的)

YmJiYg==<enter>  ---------------发送者账户的密码(必须是加密过的)

mail from:<aaa@qq.com><enter> ----------发送者的邮箱地址

rcpt to:<bbbb@qq.com><enter>  -----------接受者的邮箱地址

data<enter>        -------------下面是信的内容

你好 !我是郭倩芳。<enter>  ---------信的内容

.<enter>         ---------.”代表信结束

quit<enter>     -----------退出

 

2,用pop放松

查看邮件:

telnet pop.qq.com 110   ---------呼叫服务器

user bbbb    -------------发送者账号的名字

pass 111111    ----------发送者账户的密码

stat           ------------统计邮件

list -------------------邮件列表

retr 序号------------------查看哪个邮件的内容

 

注意在window7下面要telnet默认是没有开启的,需要手动设置:开始---》控制面板---》程序----》打开或关闭Windows功能--》

如图选中Telnet客服端。就可以运行上面的命令了。

 

 

这样就可以做注册的时候,验证邮箱了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值