javamail(javamail发送邮件带附件)
华为云服务器特价优惠火热进行中! 2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。
合作流程: |
今天给各位分享javamail的知识,其中也会对javamail发送邮件带附件进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
微信号:cloud7591如需了解更多,欢迎添加客服微信咨询。
复制微信号
本文目录一览:
- 1、javamail 验证用户名密码
- 2、javamail群发只显示一个收件人
- 3、Javamail写带附件eml文件并调用Outlook
- 4、什么是JavaMail,求完整的学习资料。
- 5、javamail版本替换后不生效
javamail 验证用户名密码
//1. 创建propeties
Properties props = new Properties();
props.setProperty("mail.store.protocol", "pop3"); //协禅锋孝议
props.setProperty("mail.pop3.host", "pop3.163.com"); //主机
try{
Session session = Session.getDefaultInstance(props);
贺稿Store store = session.getStore();
store.connect(smtpType, username, password);
} catch(Exception e) {
e.printStackTrace();
}
这里只要connect()方法连接成功基手就行了,抛出异常则代表验证不通过.
javamail群发只显示一个收件人
题主问的是javamail群发只显示一个收件人是什么原因?编辑代入相对应的代码就可以。
想要javamail群发只显示一个收件人明羡,每可以在收件人列表当中进行设置,然后设置只能看到自己,含中别人看不到谈槐山,这样就可以直接更改,并且别人在收件的时候也会只显示一个收件人。
JavaMail是提供给开发者处理电子邮件相关的编程接口。

Javamail写带附件eml文件并调用Outlook
将邮件写入到文件的代码
msg saveChanges();File f = new File( d:/test eml );msg writeTo(new FileOutputStream(f));
调脊答用outlook的代码
Process p = Runtime getRuntime() exec( cmd /C start msimn exe /eml:d:/test eml );
完整的代码如下
package code jdk mail;
import java io File;import java io FileNotFoundException;import java io FileOutputStream;import java io IOException;import java util Date;import java util Enumeration;import java util HashMap;import java util Properties;import java util Vector;
import javax activation DataHandler;import javax activation FileDataSource;import javax mail Address;import javax mail AuthenticationFailedException;import javax mail Message;import javax mail MessagingException;import javax mail Multipart;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 EmailWriteToFile {// 定义发件人 收件人 SMTP服务器 用户名 密码 主题 内容等private String displayName;
private String to;
private String from;
private String *** tpServer;
private String username;
private String password;
private String subject;
private String content;
private boolean ifAuth; // 服务器是否要正埋身份认证
private String filename = ;
private Vector file = new Vector(); // 用于保樱清慧存发送附件的文件名的集合
private String contentType = text/ ;
private String charset = utf ;
public void addFile(String filename) {file add(filename);}
public String getContentType() {return contentType;}
public void setContentType(String contentType) {ntentType = contentType;}
public String getCharset() {return charset;}
public void setCharset(String charset) {this charset = charset;}
/*** 设置SMTP服务器地址*/public void setSmtpServer(String *** tpServer) {this *** tpServer = *** tpServer;}
/*** 设置发件人的地址*/public void setFrom(String from) {this from = from;}
/*** 设置显示的名称*/public void setDisplayName(String displayName) {this displayName = displayName;}
/*** 设置服务器是否需要身份认证*/public void setIfAuth(boolean ifAuth) {this ifAuth = ifAuth;}
/*** 设置E mail用户名*/public void setUserName(String username) {this username = username;}
/*** 设置E mail密码*/public void setPassword(String password) {this password = password;}
/*** 设置接收者*/public void setTo(String to) {this to = to;}
/*** 设置主题*/public void setSubject(String subject) {this subject = subject;}
/*** 设置主体内容*/public void setContent(String content) {ntent = content;}
public EmailWriteToFile() {
}
private int port = ;
public int getPort() {return port;}
public void setPort(int port) {this port = port;}
/*** 发送邮件** @throws IOException* @throws FileNotFoundException*/public boolean send() throws FileNotFoundException IOException {HashMap<String String> map = new HashMap<String String>();map put( state success );String message = 邮件发送成功! ;Session session = null;Properties props = System getProperties();props put( mail *** tp host *** tpServer);props put( mail *** tp port port);try {
props put( mail *** tp auth false );session = Session getDefaultInstance(props null);
session setDebug(false);Transport trans = null;Message msg = new MimeMessage(session);try {Address from_address = new InternetAddress(from displayName);msg setFrom(from_address);} catch (java io UnsupportedEncodingException e) {e printStackTrace();}InternetAddress[] address = { new InternetAddress(to) };msg setRecipients(Message RecipientType TO address);msg setSubject(subject);Multipart mp = new MimeMultipart();MimeBodyPart mbp = new MimeBodyPart();mbp setContent(content toString() getContentType() + ; charset= + getCharset());mp addBodyPart(mbp);if (!file isEmpty()) {// 有附件Enumeration efile = file elements();while (efile hasMoreElements()) {mbp = new MimeBodyPart();filename = efile nextElement() toString(); // 选择出每一个附件名FileDataSource fds = new FileDataSource(filename); // 得到数据源mbp setDataHandler(new DataHandler(fds)); // 得到附件本身并至入BodyPartmbp setFileName(MimeUtility encodeText(fds getName() getCharset() B )); // 得到文件名同样至入BodyPartmp addBodyPart(mbp);}file removeAllElements();}msg setContent(mp); // Multipart加入到信件msg setSentDate(new Date()); // 设置信件头的发送日期// 发送信件msg saveChanges();File f = new File( d:/test eml );msg writeTo(new FileOutputStream(f));
} catch (AuthenticationFailedException e) {map put( state failed );message = 邮件发送失败!错误原因 + 身份验证错误! ;e printStackTrace();return false;} catch (MessagingException e) {message = 邮件发送失败!错误原因 + e getMessage();map put( state failed );e printStackTrace();Exception ex = null;if ((ex = e getNextException()) != null) {System out println(ex toString());ex printStackTrace();}return false;}// System out println( 提示信息: +message);map put( message message);return true;}
public static void main(String[] args) throws FileNotFoundException IOException InterruptedException {EmailWriteToFile o = new EmailWriteToFile();o setSmtpServer( localhost );o setFrom( );o setDisplayName( TOM );o setTo( );o setSubject( Test Subject );o setContent( Test Content );o setCharset( GBK );o addFile( e:/读我 txt );o send();Process p = Runtime getRuntime() exec( cmd /C start msimn exe /eml:d:/test eml );
lishixinzhi/Article/program/Java/hx/201311/25757
什么是JavaMail,求完整的学习资料。
JavaMail是用JAVA处理电子邮件的开发包,这个包本身就带了说明文档和示例,你对着例简族袭子参考一下就会用了。
下面是一个简单的发邮件的代码,你可以参考一下:
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import javax.activation.*;
public class SendMail {
private String host = ""; // smtp服务器
private String from = ""; // 发件人地址
private String to = ""; // 收件人地址
private String affix = ""; // 附件地址
private String affixName = ""; // 附件名称
private String user = ""; // 用户名
private String pwd = ""; // 密码
private String subject = ""; // 邮件标题
private String content = "";// 邮件内容
public void setAddress(String from, String to, String subject) {
this.from = from;
this.to = to;
this.subject = subject;
}
public void setAffix(String affix, String affixName) {
this.affix = affix;
this.affixName = affixName;
}
public void setContentText(String content) {
if (content != null)
this.content = content;
}
public void send(String host, String user, String pwd) {
this.host = host;
this.user = user;
this.pwd = pwd;
Properties props = new Properties();
// 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
props.put("mail.smtp.host", host);
// 需要经过授权,也就是有户名和密码的校验,这样才能通过验证
props.put("mail.smtp.auth", "true");
// 用刚刚设置好的props对象构建一个session
Session session = Session.getDefaultInstance(props);
// 有了这句便可以在发送邮件的过程中在console处显示过程信息穗和,供调试使
// 用(你可以在控制台(console)上看到发送邮件的过程)
session.setDebug(true);
// 用session为参数定义消息对象
MimeMessage message = new MimeMessage(session);
try {
// 加载发件人地址
message.setFrom(new InternetAddress(from));
// 加载收件人地址
message.addRecipient(Message.RecipientType.TO, new InternetAddress(
to));
// 加载标题
message.setSubject(subject);
// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
Multipart multipart = new MimeMultipart();
// 设置邮件的拦兄文本内容
BodyPart contentPart = new MimeBodyPart();
contentPart.setText(content);
multipart.addBodyPart(contentPart);
// 添加附件
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(affix);
// 添加附件的内容
messageBodyPart.setDataHandler(new DataHandler(source));
// 添加附件的标题
// 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
messageBodyPart.setFileName("=?GBK?B?"
+ enc.encode(affixName.getBytes()) + "?=");
multipart.addBodyPart(messageBodyPart);
// 将multipart对象放到message中
message.setContent(multipart);
// 保存邮件
message.saveChanges();
// 发送邮件
Transport transport = session.getTransport("smtp");
// 连接服务器的邮箱
transport.connect(host, user, pwd);
// 把邮件发送出去
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("----本程序用username@163.com发送邮件!----");
System.out.println("输入目的邮箱:");
String desAddress = sc.nextLine().trim();
System.out.println("输入标题:");
String title = sc.nextLine();
SendMail cn = new SendMail();
System.out.println("输入邮件内容,输入OK结束:");
String contentText = "";
String tmp = "";
while (!(tmp = sc.nextLine()).equalsIgnoreCase("OK")) {
contentText += tmp;
}
System.out.println("是否添加附件Y(es) or N(o)?");
String add = sc.nextLine().toCharArray()[0] + "";
if (add.equalsIgnoreCase("y")) {
System.out.println("输入附件的全路径:");
String FilePath = sc.nextLine().trim();
cn.setAffix(FilePath,
FilePath.split("\\\\")[FilePath.split("\\\\").length - 1]);
}
// 设置发件人地址、收件人地址和邮件标题
cn.setAddress("username@163.com", desAddress, title);
// 设置邮件的文本内容
cn.setContentText(contentText);
// 设置要发送附件的位置和标题
// 设置smtp服务器以及邮箱的帐号和密码
cn.send("smtp.163.com", "username", "password");
}
}
javamail版本替换后不生效
如果您已经将 JavaMail 的版本替换,但是程序仍然使用旧版本的 JavaMail,可能是因为以下原因:
1. classpath 没有正确配置:请确保已将新版的 JavaMail 相关 jar 包放到 classpath 中,并且路径正确。
2. 缓存问题:有可能您之前已经引入了旧版本的 JavaMail,并缓存了相关类。可以尝试清空缓存,让程序重新加载新版本的 JavaMail。方法详见敬缺下方:
Windows 系统:
1) 打开命令提示符窗口。
2) 输入“set CLASSPATH=”,然后按渣蚂下回车键。
3) 输入“set JAVA_HOME=”,然后按下回车键。
4) 关闭命令提示符窗口,重新运行程序。
Linux/Unix 系统:
1) 打开终端窗口。
2) 输入“export CLASSPATH=”。
3) 输入“export JAVA_HOME=”。
4) 关闭终端窗口,重新运行程序。
3. 代码中直接指定了旧版的 JavaMail:请检查代码中是否有明确指定旧版的 JavaMail 相关类的代码,如果有,请将其修改为使用新如稿埋版的 JavaMail。
如果以上解决方案都无效,可能需要更仔细地检查程序中的配置和代码,寻找问题所在。
关于javamail和javamail发送邮件带附件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
