方法:
1.前提准备工作:
首先,邮件的发送方要开启POP3 和SMTP服务--即发送qq邮件的账号要开启POP3 和SMTP服务
2.开启方法:
登陆qq邮箱
3.点击 设置
4.点击—-账户
5.找到:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 —点击开启
6.送短信 —–点击确定
7.稍等一会,很得到一个授权码! –注意:这个一定要记住,一会用到
8.点击保存修改 —OK 完成
9.java 测试代码:
package cn.cupcat.test;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
public class SendmailUtil {
public static void main(String[] args) throws AddressException, MessagingException {
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");// 连接协议
properties.put("mail.smtp.host", "smtp.qq.com");// 主机名
properties.put("mail.smtp.port", 465);// 端口号
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.ssl.enable", "true");//设置是否使用ssl安全连接 ---一般都使用
properties.put("mail.debug", "true");//设置是否显示debug信息 true 会在控制台显示相关信息
//得到回话对象
Session session = Session.getInstance(properties);
// 获取邮件对象
Message message = new MimeMessage(session);
//设置发件人邮箱地址
message.setFrom(new InternetAddress("[email protected]"));
//设置收件人地址 message.setRecipients( RecipientType.TO, new InternetAddress[] { new InternetAddress("[email protected]") });
//设置邮件标题
message.setSubject("这是第一封Java邮件");
//设置邮件内容
message.setText("内容为: 这是第一封java发送来的邮件。");
//得到邮差对象
Transport transport = session.getTransport();
//连接自己的邮箱账户
transport.connect("[email protected]", "vvctybgbvvophjcj");//密码为刚才得到的授权码
//发送邮件 transport.sendMessage(message, message.getAllRecipients());
}
}
10.运行就会发出邮件了。。。。
下面是我收到邮件的截图,当然我把源码中的邮件地址都是修改了,不是真实的,你们测试的时候,可以修改能你们自己的邮箱。最后,祝你也能成功,如果有什么问题,可以一起讨论!
注意事项
得到的授权码一定要保存好,程序中要使用
㈡ 怎么用JAVA实现邮件发送
一个小例子,也可使用其他api
importjava.util.Properties;
importjavax.mail.Address;
importjavax.mail.Authenticator;
importjavax.mail.BodyPart;
importjavax.mail.Message;
importjavax.mail.Multipart;
importjavax.mail.PasswordAuthentication;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
importjavax.mail.internet.MimeUtility;
publicclassTest{
//test
publicstaticvoidmain(String[]args)throwsException{
sendEmail("smtp.163.com","测试","测试","!!!收件人地址!!!","!!!发件人邮箱用户名!!!","!!!邮箱密码!!!","发件人昵称");
}
/**
*
*@paramsmtp
*@throwsException
*/
publicstaticvoidsendEmail(StringemailServer,Stringsubject,StringmailBody,Stringreceiver,finalStringusername,finalStringpassword,Stringnickname)throwsException{
Propertiesprops=newProperties();
props.put("mail.smtp.auth","true");
props.setProperty("mail.transport.protocol","smtp");
props.setProperty("mail.smtp.host",emailServer);
props.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback","false");
props.setProperty("mail.smtp.port","465");
props.setProperty("mail.smtp.socketFactory.port","465");
Sessionsession=Session.getDefaultInstance(props,newAuthenticator(){
(){
(username,password);
}
});
session.setDebug(true);
MimeMessagemimeMsg=newMimeMessage(session);
Multipartmp=newMimeMultipart();
mimeMsg.setSubject(MimeUtility.encodeText(subject,"utf-8",null));
nickname=MimeUtility.encodeText(nickname,"utf-8",null);
mimeMsg.setFrom(newInternetAddress(username,nickname,"UTF-8"));
BodyPartbp=newMimeBodyPart();
bp.setContent(mailBody,"text/html;charset=utf-8");
mp.addBodyPart(bp);
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(receiver));
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
Transporttransport=session.getTransport();
transport.connect(username,password);
Address[]allRecipients=mimeMsg.getAllRecipients();
transport.sendMessage(mimeMsg,allRecipients);
transport.close();
}
}
㈢ JAVA 如何实现群发邮件(1000封以上)
无敌邮件群发复机 我目前制正在使用效果非常好的。
第一:邮件跟踪统计功能,邮件打开、超链接点击,统计分析一目了然。
第二:超高发送成功率,多种发信机制组合,最大程度保证您邮件发送的成功率。
第三:邮件地址验证,自动删除重复及不存在的收件人邮件地址,保证发信的命中率。
第四:邮件地址导入导出,支持多种格式文件,提高您的工作效率。
第五:多任务并发,支持您同时执行多个群发任务。
第六:断点保护续发,自动记录发送断点,断网断电无后顾之忧。
第七:多个变量参数,优化邮件内容,降低进入垃圾箱的概率。
第八:软件持续升级,终身免费享受最新功能。
㈣ Java实现163邮箱发送邮件到QQ邮箱
在本教程中,我们将指导您使用Java实现将163邮箱的邮件发送到QQ邮箱。请按照以下步骤操作:
首先,在Maven项目中创建一个普通项目。
在项目中添加依赖,具体依赖如下:
4.0.0
com.xlgl.wzy
javamail
1.0
commonsIO
2.5.0
system
${pom.basedir}/jar/commonsIO-2.5.0.jar
com.sun.mail
javax.mail
1.6.1
junit
junit
4.10
log4j
log4j
1.2.8
org.apache.commons
commons-compress
1.5
javax.mail
mail
1.4.7
maven-assembly-plugin
jar-with-dependencies
com.xlgl.wzy.mail.SendMailUtils
make-assembly
package
single
为了实现邮件发送,您需要配置以下信息:
1. 创建配置类,用于接收配置文件中的信息,如服务器地址、端口号、用户名和授权码。
2. 在配置类中设置属性,例如服务器地址、端口号、用户名、授权码等。
3. 实现配置类的加载方法,以加载配置文件中的信息。
4. 在配置文件中,确保授权码是您163邮箱的授权码,而非邮箱地址。若未正确配置,程序将显示错误信息:使用163邮箱或其他网易邮箱时出现535 Error: authentication failed。
5. 准备邮件发送工具类,并编写发送关键方法,包括正文和附件的发送。
6. 在测试类中,通过配置信息加载和发送工具类,进行邮件发送测试。
注意:如果在发送过程中出现错误,请检查代码实现是否有误。确保所有步骤正确无误后,您的邮件应成功发送到QQ邮箱,并且在邮箱中查看到附件。
㈤ java 接收邮件附件乱码
imeUtility.encodeWord是进行编码,MimeUtility.encodeWord是进行解码
无论附件中文件是什么样的字符,都可以进行正确的解码,但是当文件都是英文
文字的时候却会包错,为null,英文这个时候不支持全英文,所以这个时候应该:
if(!part_FileName.endsWith("?=")) //是全英文
{
直接赋值
}
else
{
MimeUtility.decodeWord(文件名字);
}
messageBodyPart.setFileName(MimeUtility.encodeWord(fileName));
同样收中文附件时,以MimeUtility.decodeWord()将编码后的字符串解码。
字符编码及字符集转换问题
前面提到MIME要解决的另外一个问题就是将SMTP协议不支持的字节流转换成
为SMTP 协议支持的字节流。比如我们要通过邮件传输一个附件文档,该附件文档就
是一个8bit 字节流,如果简单的直接通过SMTP 发送,其最高位信息将被丢失。MIME
规定可以用两种编码方式将8bit 的字节流编码成为低于8bit 的字节流,它们分别是
BASE64 编码(BASE64 将8bit 字节流编码成6bit 字节流)和QP 编码。这两种编码
方式同样应用在对中文的编码上。例如如果邮件中文题目叫做“CVS 介绍”,那么其
编码后的形式可能为:
Subject: =?gb2312?B?Q1ZTLS3QpMX0LnBwdA==?=
标题字符串以”=?”开始,以”?=”结束。”gb2312”表示字符串的字符集,而以”?”分
隔的”B”就表示此字符串的编码方式为BASE64。我们处理此标题时就要先将BASE64
编码的6bit 字节流转换为原来的8bit 字节流,再根据字符集”gb2312”转换为Java 中的
String 类型。这里可以简单的使用JavaMail 提供的MimeUtility.decodeWord()静态方法
将编码后的字符串解码。
文章出处:http://www.diybl.com/course/3_program/java/javashl/20071118/86782.html