jaxMail解决日文附件名乱码问题

合集下载

收到的邮件是乱码应该如何处理

收到的邮件是乱码应该如何处理
ቤተ መጻሕፍቲ ባይዱ
然后打开这封邮件,查一下view(查看)—>encoding(编码),然后调整下面的编码设置试试看,比如可以选择chinesesimple(简体中文)或者chinesetraditional(繁体中文)或者中文hz,以及unicode试试看,一般来说,绝大多数乱码的邮件都可以修正过来。
如果你觉得这样很麻烦,可以将GB2312设置为默认的字体,方法如下(Outlook Express5为例):工具->选项->阅读->字体,在“编码”处选好GB2312,然后“设为默认值”。
如果经过如上调整,您的邮件依然无法正常显示的话,则标明该封邮件已经处于无法解析的状态,只能烦请发送方再次给您发送一封邮件,来查看状态。
收到的邮件是乱码应该如何处理?
--------------------------------------------------------------------------------
一般来说,乱码邮件的原因有下面三种:
1、由于发件人所在的国家和地区的编码和中国大陆不一样,比如台湾香港地区一般的email编码是big5码,如果在免费邮箱直接查看可能就会显示为乱码。
2、发件人使用的邮件软件工具和你使用的邮件软件工具不一致造成的。
3、由于发件人邮件服务器邮件传输机制和免费邮箱邮件传输机制不一样造成的。
一般说来对于绝大多数乱码的邮件解决方法可以采用下面的方法:
首先用outlook Express将乱码的邮件收取下来(如何用Outlook收取邮件 请看这里 ) 。

Javamail 附件中文名字乱码祥解

Javamail 附件中文名字乱码祥解

现在研究javamail的人越来越多,现在我就谈谈在javamail中大家都会遇到的附件中文问题,由于sun的java的中文问题,导致当附件是中文时将出现乱码,导致程序异常,如何避免呢??我在学习javamail时采用如下方法首先对邮件体进行分析,首先判断邮件体是否有附件:Object out_content = message[i].getContent();if (!(out_content instanceof Multipart)){//不是复合邮件体,既是不带附件。

partname = new String[0];return partname;}如果是复合邮件体,那么就可以调用如下的方法取得中文文件名:public static String getISOFileName(Part body){//设置一个标志,判断文件名从Content-Disposition中获取还是从Content-Type中获取boolean flag=true;if(body==null){return null;}String[] cdis;try{cdis=body.getHeader("Content-Disposition");}catch(Exception e){return null;}if(cdis==null){flag=false;}if(!flag){try{cdis=body.getHeader("Content-Type");}catch(Exception e){return null;}}if(cdis==null){return null;}if(cdis[0]==null){return null;}//从Content-Disposition中获取文件名if(flag){int pos=cdis[0].indexOf("filename=");if(pos<0){return null;}//如果文件名带引号if(cdis[0].charAt(cdis[0].length()-1)=='"'){return cdis[0].substring(pos+10,cdis[0].length()-1);}return cdis[0].substring(pos+9,cdis[0].length());}else{int pos=cdis[0].indexOf("name=");if(pos<0){return null;}//如果文件名带引号if(cdis[0].charAt(cdis[0].length()-1)=='"'){return cdis[0].substring(pos+6,cdis[0].length()-1);}return cdis[0].substring(pos+5,cdis[0].length());}}但是有一种情况下,取得的中文文件名也是乱码,原因有的邮件服务器在发送邮件时,对附件名进行了特殊的编码,解决如上问题的方法如下:首先:1)用如上的方法取得中文文件名:String filename= new String(getISOFileName(part).getBytes("ISO-8859-1"),"gb2312");然后创建文件,如果发生FileNotFoundException异常,说明取得的文件名是经过特殊编码的--我们取得到的未解码的,是乱吗,那么就要用javamail提供的函数decodeText进行解码。

乱码破解流程

乱码破解流程

乱码破解经典流程日期:2004年7月1日作者:人气:621??? 随着Internet的普及,在网上通过e-mail传递信息逐渐成为现代人生活的一部分,甚至不久还会成为一种生活的必需内容。

但我们在接收电子邮件的时候,不时会发现接收的邮件是些怪模怪样的乱码,根本无法阅读。

当遇到这种情况时,我们可以针对邮件乱码的现象分析它的种类,并利用手工的方法来破解。

但是这种方法不仅繁而且难,恐怕有相当一部分朋友不知如何下手,即使有个一知半解的,也会面对众多的手工解决方法而不知如何选择。

在这里笔者给大家提供一套破解邮件乱码的通用流程,至于是不是经典,那当然得由大家说了算啊!?当你收到一封乱码邮件时,第一步必须要做的是根据乱码的特征判断它到底属于哪种编码(通常有UU、MIME和BINHEX三种编码,而MIME又可细分为好几种),如果能判断出是哪种编码,最简单的方法当然是将乱码邮件剪贴下来,利用现成的乱码邮件解码软件(如乱码察看器或邮件解码器,在“华军软件园”能下载到)来解码阅读或利用中文之星、Richwin、南极星这样的中文平台转换内码。

但如果根据邮件的内容你一时判别不出是哪种编码,或者你没有任何现成的解码工具软件,则你可以如此这般地一步一步地做下去(以Outlook Express 5为例)。

?更改OE5设置?启动Outlook Express,单击“工具”/“选项”命令,在出现的对话窗中单击“阅读”标签,再单击“字体”按钮,选择“简体中文(GB2312)”。

接下来将它设置为默认值,单击“国际设置”按钮,选中“为接收的所有的邮件使用默认的编码”(如图1),确定后退出。

如此设置后,当你再打开邮件阅读时,通常就不会再出现乱码了。

?编码选项查看?如果第一步没能奏效,你可以在Outlook Express中选定乱码邮件,然后单击“查看”/“编码”/“简体中文(GB2312)”(如图2)或“其他”/“简体中文(HZ)”,看看邮件内容是不是能破解。

怎样处理电脑中邮件出现乱码的情况?分享一些经验

怎样处理电脑中邮件出现乱码的情况?分享一些经验

怎样处理电脑中邮件出现乱码的情况?分享一些经验电子邮件是—种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。

通过网络的电子邮件系统,用户可以以非常低廉的价格、非常快速的方式,与世界上任何一个角落的网络用户联系。

电子邮件可以是文字、图像、声音等多种形式。

同时,用户可以得到大量免费的新闻、专题邮件,并实现轻松的信息搜索。

电子邮件的存在极大地方便了人与人之间的沟通与交流,促进了社会的发展。

在日常的工作生活中,大家都习惯以邮件的形式发送各种文件,这样相对方便很多,不过这种情况也容易出现一些问题。

很多用户在打开邮件时,经常会发现邮件里面都是一些乱码,如果邮件是与工作相关的,那么对用户来说损失就非常大了。

导致电子邮件乱码的原因到底是什么呢?我们又该如何解决问题呢?乱码产生的原因1.传输机制不同造成的乱码由于历史的原因,Internet的某些邮件服务器数据恢复不支持8位(ASCII格式)的数据传输格式,具体来说,就是在直接发送中文双字节或二进制等非ASCII码格式文件,比如中文双字节文件(扩展ASCII码)、扩展名为JPG的图片文件、扩展名为EXE的可执行文件、扩展名为ZIP的压缩文件等,由于主机不支持8位的数据传输格式,主机在处理这些信件时就会把信件中每个字符的第八位都截去,因此造成邮件失真或损坏,接收到的邮件便是一堆乱码。

这种邮件的乱码只能由发件人解决。

2.邮件编码不同造成的乱码这是由于电子邮件系统原因造成的乱码,具体说来,就是由于各种电子邮件收发系统的默认配置不同,收件和发件人对自己邮件系统的设置也各不相同,所以在收到信件后,系统不能正确识别编码方法,因而就不能自动解码,这样当你查看这封信件的内容时,就会出现所谓的乱码,因而造成收件人无法阅读。

3.所使用的操作系统造成的乱码收发双方使用的操作系统的不同造成乱码。

比如发件人使用的是日文的Windows,而收件人使用的是简体中文的Windows,这样的邮件当然会造成乱码。

乱码处理方法

乱码处理方法

乱码处理方法
以下是 6 条关于乱码处理方法:
1. 哎呀,要是遇到乱码,咱可以试试换个编码格式呀!就像你穿衣服不搭调,那就换一件试试看嘛,比如从 UTF-8 换到 GBK 啥的。

比如你打开一个文档,全是乱码,这时候赶紧去调调编码格式呀!
2. 嘿,别忘了检查一下你的字体设置呀!有时候字体不对也会出现乱码呢。

这就好像走路走歪了路,得及时调整方向呀!比如说你在某个软件里看到的字全是乱七不糟的,那很可能就是字体的问题啦,赶紧去瞅瞅!
3. 你知道吗,重新安装相关软件也可能解决乱码问题哟!这就好比生病吃药,有时候得下点猛药才能治好嘛。

像我上次那个软件出现乱码,我把它卸了重装,立马就好啦!
4. 哇塞,清理一下缓存和临时文件也很重要呀!这就跟收拾房间一样,把垃圾清理掉,才能更清爽呀。

你想想,要是电脑里乱七八糟的东西太多,它能不出现乱码嘛。

比如说电脑用久了开始出乱码,那就赶紧清理一下呀!
5. 呀,有时候更新一下驱动程序也能行呢!这就跟给车子升级零件一样,让它跑得更顺畅嘛。

如果电脑显示有乱码,是不是驱动有点跟不上啦,赶紧去更新试试呗!
6. 注意哦,还可能是文件本身损坏导致的乱码呢!这就好像一个苹果烂了一块,会影响整体呀。

像有时候下载的文件一打开全是乱码,很有可能就是文件在下载过程中受损啦!
总之,遇到乱码不要慌,试试这些方法,说不定就能解决啦!。

为什么邮箱收到的邮件是乱码【解决方案】

为什么邮箱收到的邮件是乱码【解决方案】

为什么邮箱收到的邮件是乱码【解决⽅案】今天⼀个同事突然问我,他的邮件显⽰乱码。

我看着126的邮箱。

起初我以为126的邮箱有问题。

然⽽,他⽤⾃⼰的邮箱给不同的邮箱发了⼏封邮件,⼤多数都没问题,只有少数或多或少有问题。

好像是编码问题。

截个图,⼀堆乱码看得头⼤:我打开了126邮箱⾥乱码的邮件。

电⼦邮件正⽂的右下⾓有⼀个下拉菜单。

⾥⾯有⼀些编码类型,换⼀种格式就可以正常显⽰了。

看了126帮助,才知道126邮箱原界⾯升级后,邮箱默认编码改为UTF-8。

只需更改页⾯编码。

说到这⾥,可能有朋友会说,如果我的邮箱⾥没有改变编码类型的下拉菜单,怎么办。

为什么邮箱收到的邮件是乱码解决⽅案://Create a new PHPMailer instance$mail = new PHPMailer();//Tell PHPMailer to use SMTP$mail->isSMTP();//Enable SMTP debugging// SMTP::DEBUG_OFF = off (for production use)// SMTP::DEBUG_CLIENT = client messages// SMTP::DEBUG_SERVER = client and server messages$mail->SMTPDebug = SMTP::DEBUG_SERVER;$mail->CharSet = PHPMailer::CHARSET_UTF8;说了这么多,我可以告诉你,不管邮箱⾥的邮件还是别的什么,只要打开浏览器,在页⾯上点击⿏标右键选择编码选项,那么你就可以⾃由选择正确的编码格式来查看页⾯了。

好了,这两种⽅法我都做完了。

希望对你有帮助。

邮箱下载附件时文件名显示为乱码怎么办

邮箱下载附件时文件名显示为乱码怎么办

邮箱下载附件时文件名显示为乱码怎么办
用ie登录winmail邮箱下载附件时文件名总是显示为乱码,还得手动改回来怎么办?下面小编告诉你解决方法!
邮箱下载附件时文件名显示为乱码的解决方法
打开浏览器,然后在命令栏上点击“工具”,再单击“兼容性视图设置”选项。

(如果找不到命令栏,请见下面唤出命令栏的方法。

)
在添加此网站下的输入框中输入目标邮箱站点地址,然后点击”
确定“键。

确定邮箱地址在兼容性视图网站列表中,且”在兼容性视图中显示internet站点“单选框被选中。

IE唤出命令栏的方法:如图所示。

END
看了“邮箱下载附件时文件名显示为乱码怎么办”的人还看了
1.网易打不开邮箱怎么办
2.手机怎么设置163邮箱
3.打不开qq邮箱怎么办
4.win10打不开qq邮箱怎么办。

...邮箱收到带乱码的邮件怎么办

...邮箱收到带乱码的邮件怎么办

...邮箱收到带乱码的邮件怎么办... 邮箱收到带乱码的邮件怎么办收到乱码邮件的原因有下面三种:1、发件人写邮件所采用的汉字编码与中国大陆的汉字编码不一样。

2、发件人使用其他语言文字编码写信,收到的邮件被预设成汉字编码。

3、发件人使用了和使用者不一样的邮件收发工具。

4、发件人邮件伺服器的邮件传输方式和 ... 邮箱l邮件伺服器不一致。

对于带乱码的邮件可以采用以下解决 ... :1、用邮件客户端将邮件收取下来,开启,然后查询客户端自带的编码工具所在的位置。

2、调整编码的设定,设定成正确的编码,基本上可以解决乱码问题。

如果是邮件内容出现错误编码,则不一定能解决乱码问题。

qq邮箱邮件内容乱码了怎么办?是邮件的内容将你IE里面的快取清楚下。

qq邮箱收到jlpt日语邮件显示乱码求翻译这段乱码中没有 jlpt idMyJLPT IDと、MyJLPTに登录したパスワードは、受験申込みなどをするときに必要となりますので、忘れないようにしてください。

163的信箱手机端收到 ... 邮箱的邮件显示乱码客户端有时候很不靠谱,用遨游或者uc浏览器直接试试。

邮箱收到乱码怎么办有可能是手机发送邮件产生的错误也有可能是病毒建议查杀病毒163邮箱收到的日语邮件都是乱码怎么办?你可以点IE上面的检视-编码-其它-日文,就可以了outlook邮箱收到的日文邮件全部乱码了怎么办?在邮箱的工具-选项-阅读-用纯文字格式阅读所有邮件前面勾上。

很好用,马上就可以用了。

qq邮箱没收到12306的启用邮件怎么办1.去垃圾箱或检视一下qq拦截中是否有启用邮件2.换个163之类的邮箱... 邮箱怎么收到启用邮件您好,您是否用 ... 邮箱注册账户名称了,用邮箱注册账户名称,系统就会发验证邮件到您提供的邮箱里,您需要开启这个邮件点选验证连结将账户启用后,就可以使用了。

例如用Q邮箱注册苹果ID,就需要上述这个操作,需要注意的是您提供的邮箱地址必须正确,否则收不到验证邮件就无法将账户启用。

Javamail发送邮件主题(标题)乱码

Javamail发送邮件主题(标题)乱码

Javamail发送邮件主题(标题)乱码最近开发遇到Javamail 发送邮件标题乱码问题,腾讯、⽹易邮箱不会乱码,阿⾥邮箱标题则会乱码。

解决办法:String subject = MimeUtility.encodeWord(mailEntity.getMailSubject(), "UTF-8", "Q");message.setSubject(subject);发送邮件代码:/*** 发送邮件可以带附件内容可为HTML** @param mailEntity* @return* @throws GeneralSecurityException*/public static boolean sendMail(MailEntity mailEntity)throws GeneralSecurityException {// 发件⼈电⼦邮箱final String from = mailEntity.getMailFromAddress();// 发件⼈电⼦邮箱密码final String pass = mailEntity.getMailFromPwd();// 指定发送邮件的主机为 String host = mailEntity.getMailFromHost(); // 邮件服务器String port = mailEntity.getPort();// 获取系统属性Properties properties = System.getProperties();// 设置邮件服务器properties.setProperty("mail.smtp.host", host);properties.setProperty("mail.smtp.port",port);properties.put("mail.smtp.auth", "true");MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);properties.put("mail.smtp.ssl.enable", "false");properties.put("mail.smtp.ssl.socketFactory", sf);// 获取默认session对象Session session = Session.getDefaultInstance(properties, new Authenticator() {public PasswordAuthentication getPasswordAuthentication() { // qq邮箱服务器账户、第三⽅登录授权码return new PasswordAuthentication(from, pass); // 发件⼈邮件⽤户名、密码}});try {// 创建默认的 MimeMessage 对象MimeMessage message = new MimeMessage(session);// Set From: 头部头字段message.setFrom(new InternetAddress(from));// Set To: 头部头字段message.addRecipient(Message.RecipientType.TO, new InternetAddress(mailEntity.getMailReceiverAddress()));// Set Subject: 主题⽂字String subject = MimeUtility.encodeWord(mailEntity.getMailSubject(), "UTF-8", "Q");message.setSubject(subject);// 创建消息部分BodyPart messageBodyPart = new MimeBodyPart();// 消息// messageBodyPart.setText(mailEntity.getMailContent());messageBodyPart.setContent(mailEntity.getMailContent(), "text/html;charset=utf-8");// 创建多重消息Multipart multipart = new MimeMultipart();// 设置⽂本消息部分multipart.addBodyPart(messageBodyPart);if (mailEntity.getFilePaths() != null && mailEntity.getFilePaths().size() > 0) {for (String filePath : mailEntity.getFilePaths()) {// 附件部分messageBodyPart = new MimeBodyPart();String suffix = "";String oldPath = "";if (filePath.indexOf(".") >0){suffix = filePath.substring(filePath.indexOf(".")+1);oldPath = filePath.substring(0,filePath.indexOf("."));DataSource source = new FileDataSource(oldPath);File file = ((FileDataSource) source).getFile();file.renameTo(new File(oldPath + "." + suffix));source = new FileDataSource(filePath);messageBodyPart.setDataHandler(new DataHandler(source)); }else {// 设置要发送附件的⽂件路径DataSource source = new FileDataSource(filePath);messageBodyPart.setDataHandler(new DataHandler(source)); }// 设置要发送附件的⽂件路径// messageBodyPart.setFileName(filename);// 处理附件名称中⽂(附带⽂件路径)乱码问题messageBodyPart.setFileName(MimeUtility.encodeText(filePath)); multipart.addBodyPart(messageBodyPart);}}// 发送完整消息message.setContent(multipart);// 发送消息Transport.send(message);("Sent mail successfully....");return true;} catch (MessagingException e) {logger.debug(e.getMessage());} catch (UnsupportedEncodingException e) {logger.debug(e.getMessage());}return false;}实体:/*** @Auther: mxf* @Date: 2018/10/31 16:08* @Description:发送邮件实体类*/public class MailEntity implements Serializable {/*** 邮件接收地址*/private String mailReceiverAddress;/*** 邮件主题*/private String mailSubject;/*** 邮件内容*/private String mailContent;/*** 附件路径*/private List<String> filePaths = new ArrayList<String>();/*** 发送地址*/private String mailFromAddress;/*** 发送者的邮件密码*/private String mailFromPwd;/*** 指定发送邮件的主机*/private String mailFromHost;/*** 发送邮件主机端⼝*/private String port;public String getPort() {return port;}public void setPort(String port) {this.port = port;}public String getMailReceiverAddress() {return mailReceiverAddress;}public void setMailReceiverAddress(String mailReceiverAddress) { this.mailReceiverAddress = mailReceiverAddress;}public String getMailSubject() {return mailSubject;}public void setMailSubject(String mailSubject) {this.mailSubject = mailSubject;}public String getMailContent() {return mailContent;}public void setMailContent(String mailContent) {this.mailContent = mailContent;}public List<String> getFilePaths() {return filePaths;}public void setFilePaths(List<String> filePaths) {this.filePaths = filePaths;}public String getMailFromAddress() {return mailFromAddress;}public void setMailFromAddress(String mailFromAddress) {this.mailFromAddress = mailFromAddress;}public String getMailFromPwd() {return mailFromPwd;}public void setMailFromPwd(String mailFromPwd) {this.mailFromPwd = mailFromPwd;}public String getMailFromHost() {return mailFromHost;}public void setMailFromHost(String mailFromHost) {this.mailFromHost = mailFromHost;}}。

邮件乱码破解完全手册

邮件乱码破解完全手册

邮件乱码破解完全手册随着Internet的普及,在网上通过E-mail传递信息逐渐成为现代人生活的时尚,相信不久甚至还会成为一种生活的必需内容。

但我们在接收电子邮件的时候,不时会发现接收的邮件是些怪模怪样的乱码,根本无法阅读。

如果这些邮件的内容并不很重要,可能还不会有太大影响,可是假如是些紧急事件的通知或是生意场上的公函,则很可能就会给你带来不小的损失。

遇到这种情况,你打算怎么办呢?把邮件丢进垃圾筒就当没收到,麻烦发信人再重发一次,还是自己找方法破译?我们知道,计算机以及很多计算机网络协议的制定都是建立在ASCII码(美国国家标准信息交换码,它是一种最基本的字符表示方法)基础上的,但是随着信息内容的日益丰富,用ASCII码表示计算机信息开始暴露出很大的不足,这主要表现在表示多国文字、图形、声音等二进制文件和信息压缩、信息保密等诸多方面。

因此,在ASCII码和扩展ASCII码的基础上,用一定的规则定义一些新的信息表达形式就形成了信息传输和处理中的另一类概念和事物,这就是“编码”和“解码”。

当信息编码和解码能够统一的时候,信息无疑是可以交换和被理解的;反之,当信息编码和解码不能够得到统一的时候,信息就无法被用于交换和理解,于是就产生了所谓的“乱码”。

既然乱码的产生是由于信息编码和解码不能够得到统一,那么解决乱码的过程自然就是找到和编码相统一的解码方法,并对计算机软件不能全自动进行正确解码的信息进行重新处理和解码,最终使得所恢复的信息能被人们理解和交换,这就是所谓的“破解”。

可以说,常见的乱码都有这样一些共性:(1)和汉字或其他语种的文字有关;(2)最常发生在电子邮件的传输和阅读中;(3)和传送二进制文件有关;(4)和信息加密解密、编码解码有关。

而我们今天要讨论的电子邮件乱码的原因也正如前面所说,和相应的邮件发送系统、电子邮件软件以及操作系统平台本身,即它们用来自动识别和编码解码的协议规则,有着极为密切的关系。

邮件中出现乱码的原因及其解决方法

邮件中出现乱码的原因及其解决方法

邮件中出现乱码的原因及其解决方法邮件中出现乱码的原因及其解决方法邮件乱码的形成原因:1.邮件服务器不支持8位(非ASCII码格式)传输邮件传输机制或邮件编码的不同,可能造成邮件服务器不支持8位(非ASCII码格式)传输而形成乱码。

例如直接发送中文或二进制等非ASCII码格式的邮件时,邮件服务器无法处理,便把信件中每个字符的第八位都过滤掉。

从而造成邮件信息的失真或是损坏,收到的邮件是一堆乱码2.收发端使用的e-mail软件和设置不同一般e-mail软件的“附件”功能都可以自动对信件先进行编码,然后送出。

这样只要收信人使用的e-mail软件能区别信件的编码方式,就可以自动对信件解码。

然而由于收发件人所用的e-mail软件默认设置不同、收发件人自己定制的一些选项不同,系统不一定能识别出信件所用的编码方式,自然无法自动解码,这样就会出现乱码 3.操作系统的语种不同对于中文邮件,如果收件方所用的操作系统是英文环境,而且没有外挂中文系统或未切换为中文编码方式,也会出现乱码。

邮件乱码的解决方法:可以用压缩程序配合浏览器程序来处理1.首先选定乱码邮件,打开电子邮件程序工作窗口中的“文件”菜单,执行其中的“属性”指令,打开“属性”对话框,再单击打开其中的“详细资料”选项卡,会看到其中有一个“邮件的源文件”按钮,单击这个按钮打开一个窗口,显示邮件源文件的内容。

2.用鼠标将这个窗口中所有的内容选定,再按组合键“Ctrl+C”将其拷贝到剪贴板。

接着打开文字处理软件,将剪贴板上的内容粘贴到编辑区,最后将相应的内容保存为文本文件,例如01.txt。

将这个文本文件的后缀改为“.uue”,即将文件名变为01.uue。

点击这个.uue 文件,即可启动WinZip程序显示其内容。

3.启动IE,打开其工作窗口,从WinZip工作窗口中将01.uue文件拖放到浏览器窗口中立刻就会正常地显示出乱码邮件的内容。

javamail乱码问题

javamail乱码问题

JavaMail的乱码问题今天需要用javamail自动发邮件,结果测试结果一看,发现邮件发是发出去了,就是有一大堆的乱码,这是郁闷上网查了下,其实就是多设置一个小地方就可以咯,呵呵看来自己功夫还不到家哦,要多多练习package email;import java.io.File;import java.io.FileNotFoundException;import java.util.Properties;import java.util.Scanner;import javax.mail.BodyPart;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.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;public class MailSender {private static Properties pro = new Properties();static {pro.put("mail.transport.protocol", "smtp");pro.put("mail.smtp.auth", "true");pro.put("mail.smtp.host", "");pro.put("mail.host", "");}public MailSender() {super();// TODO Auto-generated constructor stub}public static void sendWelcomeMail(String to) {try {DyeracAuthenticator authen = new DyeracAuthenticator();Session session = Session.getInstance(pro, authen);Message msg = new MimeMessage(session);msg.setFrom(new InternetAddress("opencampus@"));msg.setSubject("欢迎注册open-campus开源平台");msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));File mail=new File("mail.txt");StringBuffer buf=new StringBuffer();try {Scanner s=new Scanner(mail);while(s.hasNextLine()){buf.append(s.nextLine());}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}if(buf.length()<1)buf.append("no text");msg.setContent(buf.toString(),"text/html;charset=utf8");System.err.println(buf.toString());Transport.send(msg);} catch (AddressException ae) {// TODO Auto-generated catch blockae.printStackTrace();} catch (MessagingException me) {me.printStackTrace();}}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubMailSender.sendWelcomeMail("dyerac@");}}要设置的地方就是msg.setContent(buf.toString(),"text/html;charset=utf8");必须设置一个字符集,不然估计对方就会按默认的us-ascii来处理了吧为了不浪费我在网上的搜索结果,我把别人写的也转在后面:可能显得比较凌乱,sorry咯LIST:JavaMail API简介JavaMail 之杜绝邮件乱码JavaMailAPI及其应用——一个邮件列表服务器的实现JavaMail操作的总结JavaMail的标题的中文问题最新版已经解决JavaMail访问Hotmail邮箱Javamail中的常见中文乱码问题与解决办法使用javamail发送html邮件--------------------------------------------------------------------------------------------------javamai原文:javamaiJavaMail API简介JavaMail API是一种可选的、能用于读取、编写和发送电子消息的包(标准扩展)。

邮件乱码的主要原因及解决方法

邮件乱码的主要原因及解决方法
如果你电脑上的的邮件收发软件不支持UU解码,那么你看到的就是这些Uuencode“乱码”。 解决Uuencode“乱码”的办法:
将Uuencode“乱码”邮件转寄到自己的邮箱中,再使用能够支持UU解码的电子邮件接收程序(如Eudora、OutLook Express等)来接收该邮件。
通过剪贴板将Uuencode“乱码”存入文本文件,改文件名后缀为UUE,然后使用Winzip解码。 将Uuencode“乱码”存入一个文件,然后在DOS下用uudecode.exe程序将文件解码。
将Base64 encode“乱码”邮件存成一个文本文件,改文件名后缀为.UUE,然后使用 Winzip 解码。 将Base64 encode“乱码”邮件存成一个文件,
将文件后缀改为.EML,由OutLook Express 打开,就可以自动解码。
3.QP-encode“乱码”
采用QP编码方式的邮件很容易进行判别,因为它的内容通常有很多等号“=”,因此不需要看“信头”也可以判断是否为QP编码。 如果你的电子邮件接收程序不支持QP解码,
那么你看到的就是这些QP-encode“乱码”。 解决QP-encode“乱码”的办法: 将QP-encode“乱码”邮件转寄到自己的邮箱中,然后用支持QP解码的电子邮件接收程序
将 Uuencode“乱码”存入一个文件,然后在Windows下用Wincode解码。 Wincode除支持UU编码外也支持MIME、Binhex等编码格式,应用范围颇为广泛。
2.Base64 encode“乱码”
Base64是MIME标准编码之一。Base64 encode编码方式是将3个字节(8位)用4个字节(6位)表示,由于编码后的内容是6位的,因此可以避免第8位被截掉。Base64 encode“乱码”大体格式为:

电子邮件“乱码”现象解析及处理txt

电子邮件“乱码”现象解析及处理txt

电子邮件“乱码”现象解析及处理收到远方客户的电子邮件,当然是一件令人高兴的事,但当你满怀欣喜地打开的时候,面对的却是一堆乱码,扫兴之余更是着急。

想必这样的情形每一个上网的用户都曾遇到过。

的确,电子邮件的乱码问题是困扰中文电子邮件用户一件头疼的事,但并非每个用户都知道如何解决这个问题。

下面笔者就从三个方面对E-mail乱码问题进行一下探讨,同时提出具体的解决办法。

电子邮件软件常用的编码方式及判别方法要解决电子邮件乱码的问题,我们很有必要了解一下电子邮件是如何进行编码的,以便可以“对症下药”,尽快解决问题。

我们知道,由于历史原因,E-mail 只允许传送字符,而且是7位字符的E-mail 网关时,毫无疑问地会出现问题。

这些7位的E-mail 网关把汉字内码第8位的1全部变成了0,于是形成了一些不可读的文字。

好在现在越来越多的E-mail 网关已能处理8位字符,国内更是如此。

所以,直接传送中文问题不大,但是要和国外的朋友通信就另当别论了,本文后面详述。

为了解决E-mail 传输8位字符以及二进制文件的问题,出现了各种各样的编码方式,概括地说,可分为对E-mail 正文的编码和对E-mail 附带文件的编码两类。

对E-mail 正文的编码有Usenet 上专门针对中文的HZ 码等,对E-mail 附带文件的编码则有UUENCODE,BINBEX 等。

而在Internet 上标准的编码方式却是MIME(Multi -purpose Internet Mail Exten—sions 多用途Internet 邮件扩展),它对E-mail 传送多媒体信息(诸如声音、图像、二进制文件等)进行了一系列详细而复杂的定义,包括了对E-mail 正文的编码和对E-mail 的附带文件的编码。

现在绝大多数的电子邮件软件如ENDORA、Foxmail、THE-BAT!等都支持MIME 编码方式。

纯中文方式编码:这就是我们通常看到的一般文本,没有经过任何编码,任何软件都能准确识别,因而不会出现任何乱码(在指定了正确的字符集后)。

JavaMail邮件别名和主题乱码解决

JavaMail邮件别名和主题乱码解决

邮件头(参见RFC822,RFC2047)只能包含US-ASCII字符。

邮件头中任何包含非US-ASCII字符的部分必须进行编码,使其只包含US-ASCII字符。

所以使用java mail发送中文邮件必须经过编码,否则别人收到你的邮件只能是乱码一堆。

不过使用java mail 包的解决方法很简单,用它自带的MimeUtility工具中encode开头的方法(如encodeText)对中文信息进行编码就可以了。

例子:MimeMessage mimeMsg = new MimeMessage(mailSession);// 让javamail决定用什么方式来编码,编码内容的字符集是系统字符集mimeMsg.setSubject( MimeUtility.encodeText( Subject) );// 使用指定的base64方式编码,并指定编码内容的字符集是gb2312mimeMsg.setSubject( MimeUtility.encodeText( Subject,”gb2312”,”B”)); //B为base64方式通常对邮件头的编码方式有2种,一种是base64方式编码,一种是QP(quoted-printable)方式编码,javamail根据具体情况来选择编码方式。

如“txt测试”编码后内容如下:=?GBK?Q?Txt=B2=E2=CA=D4里面有个=?GBK?Q?,GBK表示的是内容的字符集,?Q?表示的是以QP方式编码的(?B?则是以base64方式编码),后面紧跟的才是编码后的中文字符。

所以用MimeUtility 工具编码后的信息里包含了编码方式的信息。

邮件正文邮件的正文也要进行编码,但它不能用MimeUtility里的方法来编码。

邮件正文的编码方式的信息是要放在Content-Transfer-Encoding这个邮件头参数中的,而MimeUtility里面的方法是将编码方式的信息放在编码后的正文内容中。

解决JavaMail附件名字过长导致的乱码问题

解决JavaMail附件名字过长导致的乱码问题

解决JavaMail附件名字过长导致的乱码问题问题背景:公司有个业务场景是审核客户机构通过后,给客户发送⼀封邮件,并将机构相关材料以附件形式⼀块发送,有些附件名正常,有些就乱了,如下图:后来发现是附近名称过长导致的!问题原因:java mail中设置附件名称会采⽤ base64格式进⾏编码,如果附件名称过长会被进⾏切割,将剩下字符抹去,所以导致不知道这是什么格式的⽂件。

注:虽然将⽂件格式被改变了,但是若强制转换成原格式(右键->另存为->xxx.pdf)仍然可以进⾏打开,⽂件内容也并⾮改变(这是测试后的结果)解决⽅案:由于是spring boot 项⽬,只需要在main⽅法中加⼊以下代码即可(⼤概意思就是,取消切割,默认是true)System.setProperty("mail.mime.splitlongparameters", "false");补充知识:LinkedList的增删⼀定⽐ArrayList快吗?1.背景众所周知,arrayList底层是通过数组实现,当其超过容量时,会进⾏1.5的扩容,将原数组数据迁移⾄新数组中。

⽽LinkedList底层为双向链表,其增加操作直接在尾部新增⼀个node节点即可。

那么,在插⼊相同的数据情况下(集合默认长度都是0),到底谁更快呢?2.案例public static void main(String[] args) {List<String> array = new ArrayList<>();List<String> linked = new LinkedList<>();long start = System.currentTimeMillis();int index = 10000000;for (int i = 0; i < index; i++) {array.add("" + i);}long end = System.currentTimeMillis();System.out.println("ArrayList⽤时:" + (end - start) / 1000 + "s");start = System.currentTimeMillis();for (int i = 0; i < index; i++) {linked.add("" + i);}end = System.currentTimeMillis();System.out.println("LinkedList⽤时:" + (end - start) / 1000 + "s");}3.结果4.分析此处我是这么理解的,arrayList是通过下标直接去放⼊数据,⽽linked需要创建⼀个Node然后将数据放⼊,再与前节点建⽴链接。

邮件接收为乱码或收不到邮件解决办法

邮件接收为乱码或收不到邮件解决办法

有时收到的邮件为乱码(如下图)或者收不到邮件,这种情况是因为用户的邮件大小超过了服务器上设置的用户容量,用户可以把自己在服务器上的邮件进行清空操作。

具体操作步骤如下:
1.单击上图中工具栏上的‘远端管理’,然后会弹出如下图中的‘远
端信箱管理’窗口单击工具栏上的‘信息’在右边的信息栏中会显示服务器上现存的所有邮件
2.选中所有的邮件(快捷键:Ctrl +A),然后右键,再单击删除(如下图)
3.单击工具栏的‘服务器’会弹出一个下拉列表框,再单击‘在服务器上执行’
选项(如下图)
4.清空服务器上的邮件完成。

再接收邮件就不会出现乱码。

乱码破解经典流程

乱码破解经典流程

乱码破解经典流程日期:2004年7月1日作者:人气: 621??? 随着Internet的普及,在网上通过e-mail传递信息逐渐成为现代人生活的一部分,甚至不久还会成为一种生活的必需内容。

但我们在接收电子邮件的时候,不时会发现接收的邮件是些怪模怪样的乱码,根本无法阅读。

当遇到这种情况时,我们可以针对邮件乱码的现象分析它的种类,并利用手工的方法来破解。

但是这种方法不仅繁而且难,恐怕有相当一部分朋友不知如何下手,即使有个一知半解的,也会面对众多的手工解决方法而不知如何选择。

在这里笔者给大家提供一套破解邮件乱码的通用流程,至于是不是经典,那当然得由大家说了算啊!?当你收到一封乱码邮件时,第一步必须要做的是根据乱码的特征判断它到底属于哪种编码(通常有UU、MIME和BINHEX三种编码,而MIME又可细分为好几种),如果能判断出是哪种编码,最简单的方法当然是将乱码邮件剪贴下来,利用现成的乱码邮件解码软件(如乱码察看器或邮件解码器,在“华军软件园”能下载到)来解码阅读或利用中文之星、Richwin、南极星这样的中文平台转换内码。

但如果根据邮件的内容你一时判别不出是哪种编码,或者你没有任何现成的解码工具软件,则你可以如此这般地一步一步地做下去(以Outlook Express 5为例)。

?更改OE5设置?启动Outlook Express,单击“工具”/“选项”命令,在出现的对话窗中单击“阅读”标签,再单击“字体”按钮,选择“简体中文(GB2312)”。

接下来将它设置为默认值,单击“国际设置”按钮,选中“为接收的所有的邮件使用默认的编码”(如图1),确定后退出。

如此设置后,当你再打开邮件阅读时,通常就不会再出现乱码了。

?编码选项查看?如果第一步没能奏效,你可以在Outlook Express中选定乱码邮件,然后单击“查看”/“编码”/“简体中文(GB2312)”(如图2)或“其他”/“简体中文(HZ)”,看看邮件内容是不是能破解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

jaxMail解决日文附件名称乱码问题
public void sendExcelByMail(String filepath,String fileName,String username,String password,String address,String subject,String text) throws Exception {
//
System.out.println("<filepath>:"+filepath+"<fileName>:"+fileNam
e+"<username>:"+username+"<password>:"+password+"<address>:"+address+" <subject>:"+subject+"<text>:"+text);
Security.addProvider(new
.ssl.internal.ssl.Provider());
final String SSL_FACTORY =
".ssl.SSLSocketFactory";
// Get a Properties object
Properties props = System.getProperties();
props.setProperty("mail.smtp.host", "");
props.setProperty("mail.smtp.socketFactory.class",
SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");
final String mail_username=username;
final String mail_password=password;
Session session = Session.getDefaultInstance(props,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(mail_username, mail_password);
}
});
// -- Create a new message --
Message msg = new MimeMessage(session);
// -- Set the FROM and TO fields --
msg.setFrom(new InternetAddress(username + "@")); // msg.setFrom(new InternetAddress(username + "@"));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(address, false));
msg.setSubject(subject);
MimeBodyPart mbpText = new MimeBodyPart();
final String mailText=text.replace("E", "<br>");
mbpText.setContent(mailText, "text/html;charset=UTF-8");
MimeBodyPart attachPart2 =
createAttachment(filepath,fileName);
MimeMultipart allMultipart = new MimeMultipart();
allMultipart.addBodyPart(mbpText);
allMultipart.addBodyPart(attachPart2);
msg.setContent(allMultipart);
msg.setSentDate(new Date());
msg.saveChanges();
Transport.send(msg);
}
public static MimeBodyPart createAttachment(String filepath,String filename)
throws Exception {
MimeBodyPart attachPart = new MimeBodyPart();
FileDataSource fds = new
FileDataSource(filepath+"¥¥"+filename);
attachPart.setDataHandler(new DataHandler(fds));
attachPart.setFileName(new
String(filename.getBytes("MS932"), "ISO-8859-1"));
return attachPart;
//---------------------
}。

相关文档
最新文档