社区
Web 开发
帖子详情
javamail发邮件内容乱码
showerXP
2004-01-12 04:11:37
javamail法送邮件时,主题是中文没有问题,但是内容是中文则收到的就是??。怎么办?getBytes()方法我用了n遍感觉不是这里的问题。
...全文
600
15
打赏
收藏
javamail发邮件内容乱码
javamail法送邮件时,主题是中文没有问题,但是内容是中文则收到的就是??。怎么办?getBytes()方法我用了n遍感觉不是这里的问题。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jokerjava
2004-01-13
打赏
举报
回复
package com.kenfor.tradenet.MailSystem1;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.*;
/**
*
* <p>Title:肖力菡 </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author 肖力菡
* @version 1.0
*/
class Email_Autherticatorbean
extends Authenticator {
private String m_username = null;
private String m_userpass = null;
/**
* 设置认证用户名
* @param username
*/
public void setUsername(String username) {
m_username = username;
}
public void setUserpass(String userpass) {
m_userpass = userpass;
}
public Email_Autherticatorbean(String username, String userpass) {
super();
setUsername(username);
setUserpass(userpass);
}
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(m_username, m_userpass);
}
}
public class SendMail {
public SendMail() {
}
public static void send(String smtpServer, String to, String from,
String subject, String body,String username,String password) {
try {
Properties props = System.getProperties();
// -- Attaching to default Session, or we could start a new one --
props.put("mail.smtp.host", smtpServer);
//props.put("mail.transport.user","showerxp");
//props.put("mail.transport.password","111111");
props.put("mail.smtp.auth", "true");
javax.mail.Session session = Session.getInstance(props, new Email_Autherticatorbean(username,password));
//Session session = Session.getDefaultInstance(props, null);
session.setDebug(true);
//javax.mail.Session session = Session.getInstance(props,null);
// javax.mail.Message msg = new MimeMessage(session);
javax.mail.internet.MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
msg.setSubject(subject);
msg.setText(body,"gb2312");
msg.setHeader("X-Mailer", "KenforMail");
//msg.setDataHandler(new DataHandler(body, "text/html"));
msg.setSentDate(new Date());
javax.mail.Transport.send(msg);
System.out.println("Message sent OK.");
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[])
{
send("smtp.163.com", "收信人", "发信人",
"标题", "内容","用户名","密码");
}
}
这样就可以了 看看相关说明吧
这句话有问题 msg.setDataHandler(new DataHandler(body, "text/html"));
注释掉就可以了
showerXP
2004-01-13
打赏
举报
回复
msg.setContent(body,"text/plain")不行。还就得msg.setText没有问题。
还有,我一定是要发送html格式的文件。急用啊。这个可是很严重的问题呢。
Leemaasn
2004-01-13
打赏
举报
回复
我也Up一下
我也Up两下
!!!
^@^
linpeiwen
2004-01-13
打赏
举报
回复
sign
Leemaasn
2004-01-13
打赏
举报
回复
先Up一下,,,
回头再来看。。。
^@^
cdk
2004-01-13
打赏
举报
回复
邮件内容用
msg.setContent(body,"text/plain")
邮件主题用
msg.setSubject(new String(subject.getBytes("ISO8859_1"));
showerXP
2004-01-13
打赏
举报
回复
msg.setDataHandler(new DataHandler(body, "text/html"));
没有这句就不能发送html格式的邮件了。
我的问题解决了,多谢大家。
showerXP
2004-01-12
打赏
举报
回复
自己再up一下
关键问题是这里。msg.setText(body,"gb2312");
msg.setText就只能是文本形式.mime是"text/plain"发送中文是没有问题。但是“text/html”就有上述问题了。大家是怎么解决的阿。
showerXP
2004-01-12
打赏
举报
回复
来来来,下面是我的源代码,大家可以直接用。要先加mail.jar和active.jar两个包。
package com.kenfor.tradenet.MailSystem1;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.*;
/**
*
* <p>Title:肖力菡 </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author 肖力菡
* @version 1.0
*/
class Email_Autherticatorbean
extends Authenticator {
private String m_username = null;
private String m_userpass = null;
/**
* 设置认证用户名
* @param username
*/
public void setUsername(String username) {
m_username = username;
}
public void setUserpass(String userpass) {
m_userpass = userpass;
}
public Email_Autherticatorbean(String username, String userpass) {
super();
setUsername(username);
setUserpass(userpass);
}
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(m_username, m_userpass);
}
}
public class SendMail {
public SendMail() {
}
public static void send(String smtpServer, String to, String from,
String subject, String body,String username,String password) {
try {
Properties props = System.getProperties();
// -- Attaching to default Session, or we could start a new one --
props.put("mail.smtp.host", smtpServer);
//props.put("mail.transport.user","showerxp");
//props.put("mail.transport.password","111111");
props.put("mail.smtp.auth", "true");
javax.mail.Session session = Session.getInstance(props, new Email_Autherticatorbean(username,password));
//javax.mail.Session session = Session.getInstance(props,null);
// javax.mail.Message msg = new MimeMessage(session);
javax.mail.internet.MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
msg.setSubject(subject);
msg.setText(body,"gb2312");
msg.setHeader("X-Mailer", "KenforMail");
msg.setDataHandler(new DataHandler(body, "text/html"));
msg.setSentDate(new Date());
javax.mail.Transport.send(msg);
System.out.println("Message sent OK.");
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[])
{
send("smtp.163.com", "收信人", "发信人",
"标题", "内容","用户名","密码");
}
}
Email_Autherticatorbean可以考虑用内部类实现好一些。
showerXP
2004-01-12
打赏
举报
回复
dodorunning(叮咚
我跟你的正好相反。
stonecsdn
2004-01-12
打赏
举报
回复
学习
showerXP
2004-01-12
打赏
举报
回复
还有,我觉得字符集charset是个误区。根本javamail就是把汉字用“?”替代了。比如我写了三个汉字,他就显示三个???。
showerXP
2004-01-12
打赏
举报
回复
public void setText(java.lang.String text,
java.lang.String charset)
throws MessagingException
用了字符集参数 这样子的。msg.setText(body,"gb2312")
还是不行。
jokerjava(冷血):老大 你到底成功过没有,有没有其他的提示拉。
dodorunning
2004-01-12
打赏
举报
回复
我的程序subject中文显示有问题,但是内容没有问题。
我用一个方法试了一下,还是不行
public static String toChinese(String strvalue){
try{
if(strvalue==null)
return null;
else
{
strvalue = new String(strvalue.getBytes("ISO8859"),"GBK");
return strvalue;
}
}catch(Exception e){
return null;
}
}
jokerjava
2004-01-12
打赏
举报
回复
public void setText(java.lang.String text,
java.lang.String charset)
throws MessagingException
可以设字符集的
javaMail
发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人
乱码
javaMail
发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人
乱码
查看debug 邮件处理过程发现邮件头没有编译,
内容
是base64编码,所以邮箱收不到或者收到的是base64编码后的一堆
乱码
,
javamail
发送邮件 主题
乱码
解决
第90行,setSubject("")
java项目实战之购物商城(java毕业设计)
项目涉及的技术: 1、前端:jsp、css、javascript、jQuery(js框架) 2、后台:Servlet、动态代理、Mybatis框架、
javaMail
进行邮件发送、jstl 、jstl自定义分页标签、代码生成器等 3、数据库:Mysql 4、服务器:Tomcat项目开发涉及的功能: 1、项目以及数据库搭建2、用户登录、退出3、用户注册、邮件发送、以及用户信息激活4、首页商品信息页面搭建以及查询功能实现5、查询商品明细6、加入商品至购物车、删除、更新、清除购物车商品信息7、确认订单信息8、订单页面搭建以及下订单功能实现9、查询我的购物车以及订单信息10、商品系统后台界面搭建11、代码机器人使用等等
使用
JavaMail
发送复杂邮件源代码
利用
JavaMail
进行邮件开发的
发邮件
的源代码,其中有四个例子,demo1/demo2是发送简单的邮件,demo3是发送一封html格式(正文为html格式,html代码中有一张图片)带附件的邮件。demo4是对demo3的补充,解决了附件的文件名
乱码
的问题
jsp/servlet
javamail
发送邮件 可发送多个附件
jsp/servlet 模式的发送邮件系统 可发送多个附件 存在的问题为 subject可能会
乱码
有问题可以给我留言
Web 开发
81,092
社区成员
341,717
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章