- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 Javamail API 从 Gmail 服务器读取邮件。我正在从一个 Gmail ID 向另一个 Gmail ID 发送一封包含阿拉伯语内容的邮件。邮件的Charset编码类型为windows-1256。当我使用 Javamail 下载邮件时,我得到的内容是“??????”格式而不是阿拉伯字符。我正在将下载的内容转换为 UTF-8 格式,但仍然无法正确显示。
提前致谢
蒂姆
更新:
我正在使用以下代码来获取内容:
Object content = message.getContent();
if (message.isMimeType("text/html")
|| message.isMimeType("text/plain")) {
Al = (String) content;
}
下载内容后,以下代码用于 UTF-8 编码:
byte[] utf8Bytes = s.getBytes("UTF-8");
s = new String(utf8Bytes, "UTF-8");
更新:我目前用来读取邮件内容的完整代码
String gmailMultipartMailDownload(Multipart multipart, String Uids)
throws SocketException, UnsupportedDataTypeException, UnsupportedEncodingException {
String Content = new String("");
try {
int numParts = multipart.getCount();
for (int k = 0; k < numParts; k++)
{
BodyPart bodyPart = multipart.getBodyPart(k);
Object tmp = null;
try
{
tmp = bodyPart.getContent();
}
catch (UnsupportedDataTypeException UEE)
{
try {
InputStream is = bodyPart.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = br.readLine()) != null)
{
sb.append(line + "\n");
}
br.close();
return sb.toString();
} catch (IOException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException UEE) {
UEE.printStackTrace();
try {
InputStream is = bodyPart.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = br.readLine()) != null)
{
sb.append(line + "\n");
}
br.close();
return sb.toString();
} catch (IOException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
String disposition = bodyPart.getDisposition();
if (tmp instanceof InputStream) {
try{
if( super.Downloadfiles(bodyPart, hashCode, attnumcount,this.getgmailattachmentfolder()))
{
//Download Attachments
}
}catch (FileNotFoundException err) {
return Content;
}
catch(IOException fex){
fex.printStackTrace();
return Content;
}
}
else if (disposition != null
&& (disposition.equals(BodyPart.ATTACHMENT) || disposition.equals(BodyPart.INLINE) || disposition.equals("ATTACHMENT"))) {
try{
if( super.Downloadfiles(bodyPart, hashCode, attnumcount,this.getgmailattachmentfolder()))
{
//Download Attachments
}
}catch (FileNotFoundException err) {
System.out.println(err.getMessage());
return Content;
}
catch(IOException fex){
fex.printStackTrace();
return Content;}
} else if (bodyPart.isMimeType("multipart/*")) {
Multipart mp = (Multipart) bodyPart.getContent();
Content += gmailMultipartMailDownload(mp, Uids);
} else if (bodyPart.isMimeType("text/html")) {
Content += bodyPart.getContent().toString();
}
}
}
catch (Exception Ex) {
System.out.println("Content object error is "+Ex);
return Content;
} finally {
return Content;
}
}
最佳答案
这对我有用:
public boolean sendEmail(String sender, String recipient, String subject, String body)
{
try
{
// set properties of mail server
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.gmail.com");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
props.setProperty("charset","utf-8");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.quitwait", "false");
// connect to mail server
javax.mail.Session session = javax.mail.Session.getDefaultInstance(props,
new javax.mail.Authenticator()
{
protected PasswordAuthentication getPasswordAuthentication()
{ return new PasswordAuthentication(gmailUser,gmailPassword); }
});
// create email
MimeMessage message = new MimeMessage(session);
message.setSender(new InternetAddress(sender));
message.setSubject(subject, "UTF-8");
message.setContent(body, "text/plain; charset=utf-8");
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
// send email
Transport.send(message);
return true;
}
catch (Exception e)
{
System.out.println("Exception thown "+e.getMessage());
return false;
}
关于java - 使用 javamail API 阅读邮件时出现阿拉伯语内容问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9407922/
我正在尝试读取一个大型日志文件,该文件已使用不同的分隔符(遗留更改)进行了解析。 此代码有效 import os, subprocess, time, re import pandas as pd f
我试图理解在 Linux 下以 Turbo 模式(特别是 fpc -Mtp -vw)编译的 Free Pascal 中看到的有点神奇的行为。代码来自 Jack Crenshaw 的“让我们构建一个编译
我有一个具有以下结构的 txt 文件: NAME DATA1 DATA2 a 10 1,2,3 b 6 8,9 c 2
我试图理解在 Linux 下以 Turbo 模式(特别是 fpc -Mtp -vw)编译的 Free Pascal 中看到的有点神奇的行为。代码来自 Jack Crenshaw 的“让我们构建一个编译
public class Bug1 { private String s; public void Bug1(){ s = "hello"; } public Stri
我们有这样一种情况,我们的应用程序需要处理一系列文件,而不是同步执行此功能,我们希望采用多线程将工作负载分配给不同的线程。 每一项工作是: 1.以只读方式打开文件 2.处理文件中的数据 3.将处理后的
我正在尝试读取 .php 文件并替换十六进制字符。php文件格式如下: 问题是它弄乱了转义字符 (\") 到目前为止我的代码: while(i=48 && str[i+2]=97 && str[i+
我正在用 C# 开发一个程序,我需要一些帮助。我正在尝试创建一个数组或项目列表,显示在某个网站上。我想要做的是阅读 anchor 文本,它是 href。例如,这是 HTML:
我有一个偏好设置,它控制我的应用程序是否在用户单击按钮时播放声音(这种情况经常发生,想想计算器)。每次用户单击按钮时,都会调用以下方法: private void playButtonClickSou
我正在尝试在我的标签末尾创建一个阅读更多按钮。我希望它默认显示 3 行。我正在用 swift 而不是 objective c 编写代码。只有当用户点击标签的阅读更多部分时,标签才会展开。它的外观和工作
当您获得第三方库(c、c++)、开源(LGPL 说)但没有很好的文档时,了解它以便能够集成到您的应用程序中的最佳方法是什么? 该库通常有一些示例程序,我最终使用 gdb 浏览了代码。还有其他建议/最佳
同时从 2 个或更多不同线程对同一个文件描述符使用 pread 是否有问题? 最佳答案 pread 本身是线程安全的,因为它不在 list of unsafe functions 上.所以调用它是安全
当您使用命令 pd.read_csv 读取 csv 时,如何跳过连续包含特定值的行?如果在第 50、55 行,第一列的值为 100,那么我想在读取 csv 文件时跳过这些行。我如何将这些命令放入像 p
我迫切需要在 C# 中使用 T4 生成 HTML 输出。 我正在使用 Runtime-T4-Files 并选择“TextTemplatingFilePreprocessor”而不是“TextTempl
今年夏天我在实习期间一直在学习 ERP 应用程序。由于我是一名即将毕业的程序员,我希望有一个可靠的软件分支可以帮助我完成工作,直到我确定下一步该做什么(直到我对大局有一个很好的了解)。到现在为止,我刚
将包含列(例如“a”、“b”)的数据帧保存为 parquet,然后在稍后的时间点读取 parquet 不会提供相同的列顺序(可能是“b”、“a”fe)文件保存为。 不幸的是,我无法弄清楚订单是如何受到
我正在开发一个使用谷歌表格作为数据库的应用程序,但我不知道如何让 Swift 从谷歌表格中读取。我浏览了 API 网站和一些问题,但刚开始我需要一些帮助。到目前为止,我有; 私有(private)让范
我打算阅读swing concept,如果值得一读,请推荐一些学习 Material 最佳答案 自 AWT 崩溃以来,Java 的 GUI 工具包太多了。即使是 Swing 也被评论家严重低估,但他们
我已经使用 J 几个月了,我发现阅读不熟悉的代码(例如,不是我自己写的)是该语言最具挑战性的方面之一,尤其是在默认情况下。过了一会儿,我想出了这个策略: 1)将代码段复制到word文档中 2)从(1)
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我是一名优秀的程序员,十分优秀!