javamail 发送邮件的时候中间乱码是什么意思?:报错 -问答-阿里云开发者社区-阿里云

开发者社区> kun坤> 正文

javamail 发送邮件的时候中间乱码是什么意思?:报错

2020-06-14 10:53:17 215 1

使用ssl方式发送邮件的时候标题和内容中间的乱码是什么东东?求各位解答。

取消 提交回答
全部回答(1)
  • kun坤
    2020-06-14 10:53:22

    应该是邮件的头文件,估计保存了一些邮件发送接收服务器之间相联系的加密信息.密钥什么的.######

    引用来自“梦无涯”的答案

    应该是邮件的头文件,估计保存了一些邮件发送接收服务器之间相联系的加密信息.密钥什么的.
    我猜也是,对了请问你有一个附件读取成二进制后发送的的经验么?
    ######

    引用来自“养不胖”的答案

    引用来自“梦无涯”的答案

    应该是邮件的头文件,估计保存了一些邮件发送接收服务器之间相联系的加密信息.密钥什么的.
    我猜也是,对了请问你有一个附件读取成二进制后发送的的经验么?

    你是想发送附件?我是用的common-email 组件,有做封装的,你有兴趣的话,可以看下它的源码吧.如果只是想实现功能的话,其实很简单的:

    /**
     * 发送邮件,包含多个附件,发件人等配置信息在email.properties中配置
     * @param addr 收件人地址
     * @param subject 邮件主题
     * @param content 邮件内容
     * @param paths 多个附件地址
     */
    public static void sendEmail(String addr,String subject,String content,String[] paths) {
    	Pattern p = Pattern.compile("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");   
    	if(StringUtils.isBlank(addr) || !p.matcher(addr).matches()) {
    		throw new IllegalArgumentException("the addr is not a legal email addrs:" + addr);
    	}
    	
    	Map<String,String> map = EmailUtils.loadEmailConfig();
    	HtmlEmail email = new HtmlEmail();
    	try {
    		email.setHostName(map.get("email.hostname"));
    		email.setCharset(map.get("email.charset"));
    		email.addTo(addr);
    		email.setFrom(map.get("email.sender"));
    		email.setAuthentication(map.get("email.auth.user"),
    				map.get("email.auth.pwd"));
    		email.setSubject(subject);
    		email.setHtmlMsg(content);
    		/**
    		 * 添加附件
    		 */
    		for(EmailAttachment att : getAttachs(paths)) {
    			email.attach(att);
    		}
    		email.send();
    	} catch (EmailException e) {
    		e.printStackTrace();
    	}
    }
    
    private static List<EmailAttachment> getAttachs(String[]paths) {
    	List<EmailAttachment> attachs = new ArrayList<EmailAttachment>();
    	if(paths != null) {
    		for(String path : paths) {
    			EmailAttachment attach = new EmailAttachment();
    			
    			//解决附件的中文名称 乱码问题 */ 
    			String encoding = System.getProperty("file.encoding");
    			sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
    			String[] str = path.split("\\\\");
    			String title = str[str.length-1];
    			attach.setName("=?"+encoding+"?B?"+enc.encode(title.getBytes())+"?=");
    			
    			attach.setPath(path);
    			attachs.add(attach);
    		}
    	}
    	
    	return attachs;
    }

    ######这是JavaMail的版本: http://chengyue2007.iteye.com/blog/787151###### @梦无涯 不行,我要的不是这种效果。

    我的意思是。我发送一封邮件的时候附件是*.doc或者别的文件。

    然后我用二进制读取之后传一个byte数组到发送邮件的地方。

    我发送的邮件中附件是有,但是附件中全部是乱码。

    ######不太明白,你是想要读取邮件的附件么?######

    @梦无涯 不是的,先读取一个文件为二进制。

    然后把读到的二进制数组传到发送邮件的方法。最后发送出去。

    并不是读邮件的附件。这个图片是我在附件里面打开时候显示的乱码。也就是附件的内容是乱码。

    ######如果只是乱码问题,应该可以着手解决一下,程序转换一下编码格式什么的,应该可以解决吧.######乱码的话,参考下这边的解决方案吧.  http://bbs.csdn.net/topics/110144296######

    @梦无涯 这些都试过了。不行的。


    0 0
相关问答

11

回答

iphone设置阿里云邮箱的步骤

minioba 2013-04-24 22:04:37 101698浏览量 回答数 11

57

回答

为阿里云ECS(CentOS7)配置IPv6隧道地址

dongshan8 2016-06-17 13:51:32 104419浏览量 回答数 57

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 256862浏览量 回答数 38

103

回答

为阿里云ECS(Windows 2012)创建IPv6隧道地址

dongshan8 2016-06-09 16:40:16 101434浏览量 回答数 103

8

回答

全线HTTPS 阿里云OSS一键签发绑定免费SSL证书图文教程

51干警网 2018-08-16 13:44:36 84507浏览量 回答数 8

257

回答

“零基础”系列课程--如何在ECS上快递搭建一个WordPress站点

patricia 2015-09-30 17:40:16 86196浏览量 回答数 257

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302590浏览量 回答数 249

8

回答

mail.aliyun.com邮箱android手机客户端设置方法

jack_yang 2013-04-24 09:01:34 122070浏览量 回答数 8

4

回答

【漏洞公告】CVE-2018-1999002:Jenkins任意文件读取漏洞

正禾 2018-07-26 06:46:18 84941浏览量 回答数 4

37

回答

【云服务器教程征集令】这个六一阿里云邀您来吐槽!

fanyue88888 2012-06-01 18:55:41 113739浏览量 回答数 37
+关注
0
文章
13401
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载