Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
磅符号在使用java.mail包的邮件内容中不起作用?_Java_Unicode_Jakarta Mail - Fatal编程技术网

磅符号在使用java.mail包的邮件内容中不起作用?

磅符号在使用java.mail包的邮件内容中不起作用?,java,unicode,jakarta-mail,Java,Unicode,Jakarta Mail,大家好 我使用javax.mail Package MINEMESSAGE、MimeMultipart类来发送邮件,但即使我提到utf-8类型,unicode字符在正文中也不起作用。比如英镑标志不起作用。请帮忙做什么。这是我的邮件标题 To: kumar.k@mysite.com Message-ID: <875158456.1.1294898905049.JavaMail.root@nextrelease> Subject: My Site Free Trial - 5 day

大家好

我使用javax.mail Package MINEMESSAGE、MimeMultipart类来发送邮件,但即使我提到utf-8类型,unicode字符在正文中也不起作用。比如英镑标志不起作用。请帮忙做什么。这是我的邮件标题

To: kumar.k@mysite.com

Message-ID: <875158456.1.1294898905049.JavaMail.root@nextrelease>

Subject: My Site Free Trial - 5 days left

MIME-Version: 1.0
Content-Type: multipart/mixed; 
 boundary="----=_Part_0_1733237863.1294898905008"

MyHeaderName: myHeaderValue

Date: Thu, 13 Jan 2011 06:08:25 +0000 (UTC)

------=_Part_0_1733237863.1294898905008

Content-Type: text/html; charset=UTF-8

Content-Transfer-Encoding: quoted-printable

**Here Body message**


    Take advantage of our best value price  annual subscription at only= =EF=BF=BD=EF=BF=BD49    per month. Or our no commitment monthly subscription= at just =EF=BF=BD=EF=BF=BD59 per month. "

Actual out put should be: "Take advantage of our best value price  annual subscription at only £49 per month. Or our no commitment monthly subscription at just £59 per month.
To:kumar。k@mysite.com
消息ID:
主题:我的网站免费试用-还剩5天
MIME版本:1.0
内容类型:多部分/混合;
boundary=“---=\u Part\u 0\u 1733237863.1294898905008”
MyHeaderName:myHeaderValue
日期:2011年1月13日星期四06:08:25+0000(UTC)
------=_部分_0_1733237863.1294898905008
内容类型:text/html;字符集=UTF-8
内容传输编码:引用可打印
**这里是身体信息**
利用我们的最佳价值价格年度订阅,每月仅==EF=BF=BD=EF=BF=BD49。或者我们的无承诺每月订阅=at just=EF=BF=BD=EF=BF=BD59。"
实际输出应该是:“利用我们最划算的价格,每月仅49英镑的年度订阅。或者我们的无承诺每月订阅费仅为59英镑。
这是代码

MimeMessage msg = new MimeMessage(session);

        InternetAddress addressTo[] = new InternetAddress[emsg.getRecipeants()
                .size()];
        int i = 0;
        try {
            for (String email : emsg.getRecipeants()) {
                InternetAddress address = new InternetAddress(email);
                addressTo[i] = address;
                log.info(acc.getSenderEmailID() + " sending mail To " + email);
            }

            msg.setRecipients(Message.RecipientType.TO, addressTo);
            if (emsg.getReplayTO() != null) {
                msg.setReplyTo(new InternetAddress[] { new InternetAddress(emsg
                        .getReplayTO()) });
            }
            String from = "";
            if (!acc.getAccoutName().equals("")) {
                from = acc.getAccoutName() + "<" + acc.getSenderEmailID() + ">";
            } else {
                from = acc.getSenderEmailID();
            }
            msg.setFrom(new InternetAddress(from));
            // MultiPart body part

            Multipart multipart = new MimeMultipart();

            // This is the message body content part

            MimeBodyPart messageContentPart = new MimeBodyPart();

            String content = processContent(emsg.content, multipart,
                    comapanyDBName);
            if (emsg.isPlain) {
                messageContentPart.setContent(content,
                        "text/plain; charset=UTF-8");
            } else {
                messageContentPart.setContent(content,
                        "text/html; charset=UTF-8");
            }
            multipart.addBodyPart(messageContentPart);

            // This is the template Attachment part
            if (emsg.getAttachment() != null) {
                for (File file : emsg.getAttachment()) {
                    MimeBodyPart messageAttachmentBodyPart = new MimeBodyPart();
                    messageAttachmentBodyPart = new MimeBodyPart();

                    DataSource source = new FileDataSource(file);

                    messageAttachmentBodyPart.setDataHandler(new DataHandler(
                            source));
                    messageAttachmentBodyPart.setFileName(file.getName());
                    multipart.addBodyPart(messageAttachmentBodyPart);
                }
            }

            // Put parts in message
            msg.setContent(multipart);

            // end

            // Optional : You can also set your custom headers in the Email
            // if
            // you
            // Want
            msg.addHeader("MyHeaderName", "myHeaderValue");

            // Setting the Subject and Content Type
            msg.setSubject(emsg.subject, "UTF-8");
            // msg.setSubject(emsg.subject);//text/plain; charset=ISO-8859-1
            // msg.setContent( map.getValue().getContent(), "text/html");
        } catch (AddressException e) {

            e.printStackTrace();
        } catch (MessagingException e) {

            e.printStackTrace();
        }
        return msg;
MimeMessage msg=新MimeMessage(会话);
InternetAddress addressTo[]=新的InternetAddress[emsg.getRecipeants()
.size()];
int i=0;
试一试{
for(字符串电子邮件:emsg.getRecipeants()){
InternetAddress地址=新的InternetAddress(电子邮件);
addressTo[i]=地址;
log.info(根据getSenderEmailID()+“将邮件发送到”+电子邮件);
}
msg.setRecipients(Message.RecipientType.TO,addressTo);
if(emsg.getReplayTO()!=null){
msg.setReplyTo(新InternetAddress[]{new InternetAddress(emsg
.getReplayTO())});
}
字符串from=“”;
如果(!acc.getAccountName().等于(“”){
from=acc.getAccountName()+“”;
}否则{
from=acc.getsenderemaild();
}
msg.setFrom(新因特网地址(from));
//多部分身体部位
Multipart Multipart=新的MimeMultipart();
//这是消息正文内容部分
MimeBodyPart messageContentPart=新的MimeBodyPart();
字符串内容=processContent(emsg.content,多部分,
comapanyDBName);
如果(emsg.isPlain){
messageContentPart.setContent(content,
“文本/纯文本;字符集=UTF-8”);
}否则{
messageContentPart.setContent(content,
“text/html;charset=UTF-8”);
}
multipart.addBodyPart(messageContentPart);
//这是模板附件部分
if(emsg.getAttachment()!=null){
对于(文件:emsg.getAttachment()){
MimeBodyPart消息AttachmentBodyPart=新的MimeBodyPart();
messageAttachmentBodyPart=新的MimeBodyPart();
DataSource source=新文件DataSource(文件);
messageAttachmentBodyPart.setDataHandler(新DataHandler(
资料来源);
messageAttachmentBodyPart.setFileName(file.getName());
multipart.addBodyPart(messageAttachmentBodyPart);
}
}
//将部件放入消息中
msg.setContent(多部分);
//结束
//可选:您还可以在电子邮件中设置自定义标题
//如果
//你
//想要
msg.addHeader(“MyHeaderName”、“myHeaderValue”);
//设置主题和内容类型
msg.setSubject(emsg.subject,“UTF-8”);
//msg.setSubject(emsg.subject);//text/plain;charset=ISO-8859-1
//msg.setContent(map.getValue().getContent(),“text/html”);
}捕获(地址e){
e、 printStackTrace();
}捕获(消息异常e){
e、 printStackTrace();
}
返回味精;

我认为,尽管set内容类型为charset UTF-8,但并不编写UTF8流。您正在使用BufferedWriter吗?检查是否将正确的字符集传递给其构造函数

我认为,尽管set内容类型为charset UTF-8,但并不编写UTF8流。您正在使用BufferedWriter吗?检查是否将正确的字符集传递给其构造函数

有两种可能性

首先,您确定
emsg.content
包含非屏蔽数据吗?如果在你使用此代码之前它已损坏,那么你就已经不走运了

其次,如果
内容
没有问题,请尝试使用
MimeBodyPart.setText()

        if (emsg.isPlain) {
            messageContentPart.setText(content, "UTF-8", "plain");
        } else {
            messageContentPart.setText(content, "UTF-8", "html");
        }
有两种可能性

首先,您确定
emsg.content
包含非屏蔽数据吗?如果在你使用此代码之前它已损坏,那么你就已经不走运了

其次,如果
内容
没有问题,请尝试使用
MimeBodyPart.setText()

        if (emsg.isPlain) {
            messageContentPart.setText(content, "UTF-8", "plain");
        } else {
            messageContentPart.setText(content, "UTF-8", "html");
        }

消息正文中有什么?
显示为
=C2=A3
是否像它应该显示的那样?这些编码的八位字节是
U-FFFD替换字符的UTF-8表示形式。请显示您的实际代码,它有问题。我编辑了我的问题。请看一下邮件正文里有什么?
显示为
=C2=A3
是否像它应该显示的那样?这些编码的八位字节是
U-FFFD替换字符的UTF-8表示形式。请显示您的实际代码,它有问题。我编辑了我的问题。请查看它(为什么
processContent
需要将
Multipart
作为参数?)。mesg.content已损坏。mesg.content来自文件。因此,从文件本身读取是错误的。我找到并修复了。ans:从文件中读取字节并返回新字符串(b