java 我怎样才能把一个HTML链接内的电子邮件正文?

h22fl7wq  于 2023-02-18  发布在  Java
关注(0)|答案(5)|浏览(149)

我有一个应用程序,可以发送邮件,在Java中实现。我想把一个HTML链接里面的邮件,但链接显示为正常的字母,而不是作为HTML链接...我怎么做的HTML链接里面变成一个字符串?我需要特殊字符?谢谢你这么多

**更新:**大家好!谢谢你的回答!下面是我的代码:

public static boolean sendMail(Properties props, String to, String from,
          String password, String subject, String body)
{
    try
    {
        MimeBodyPart mbp = new MimeBodyPart(); 
        mbp.setContent(body, "text/html"); 
        MimeMultipart multipart = new MimeMultipart(); 
        multipart.addBodyPart(mbp); 

        
        
        // Preparamos la sesion
        Session session = Session.getDefaultInstance(props);

        // Construimos el mensaje
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setContent(multipart);
        message.addRecipient(
                Message.RecipientType.TO,
                new InternetAddress(to));
        message.setSubject(subject);
        message.setText(body);

        // Lo enviamos.
        Transport t = session.getTransport("smtp");
        t.connect(from, password);
        t.sendMessage(message, message.getAllRecipients());

        // Cierre.
        t.close();
        return true;
    }
    catch (Exception e)
    {
        e.printStackTrace();
        return false;
    }
}

这里的身体字符串:

String link = "<a href=\"WWW.google.es\">ACTIVAR CUENTA</a>";

但是在收到的消息中,链接显示为链接字符串,而不是HTML超链接!我不明白发生了什么...
有办法吗?

cwxwcias

cwxwcias1#

添加链接就像在字符串中添加<a href="..">text</a>一样简单,你应该设置你的email支持html(这取决于你使用的库),并且你不应该在发送邮件之前转义你的email内容。
更新:因为您使用的是java.mail,所以应该这样设置文本:

message.setText(body, "UTF-8", "html");

html是mime子类型(这将导致text/html)。setText(string)方法使用的默认值为plain

zlhcx6iw

zlhcx6iw2#

我只是要回答万一这对别人不起作用。
我尝试了Bozho的方法,由于某种原因,当我对整个邮件执行setText时,电子邮件无法发送。
我试过了

MimeBodyPart mbp = new MimeBodyPart(); 
mbp.setContent(body, "text/html");

但这是作为一个附件在Outlook中,而不是在通常的文本。为了解决这个问题,我在Outlook中,而不是做mbp.setContent和message.setText,我只是做了一个单一的setText的邮件正文部分。即:

MimeBodyPart mbp = new MimeBodyPart(); 
mbp.setText(messageBody,"UTF-8", "html");

我的消息代码如下所示:

MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
for(String str : to){
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(str));
}        
message.setSubject(subject);
// Create the message part 
MimeBodyPart messageBodyPart = new MimeBodyPart();

// Fill the message
messageBodyPart.setText(messageBody,"UTF-8","html");

Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);

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

// Send the message
Transport.send(message);
dzjeubhm

dzjeubhm3#

在URL前添加“http://”对我很有效。

ecbunoof

ecbunoof4#

我们可以使用java代码在电子邮件正文中创建html链接。在我的情况下,我正在开发重置密码,我应该创建链接并通过www.example.com发送给用户,将创建一个字符串。在字符串中键入所有的URL。如果您将http添加到该链接。它的行为就像邮件中的链接。mail.you will create one string.With in a string you type all the url.If you add the http to the that .it behaves like link with in the mail.

    • 例如:字符串邮件正文="http://localhost:8080/Mail/verifytoken?token="+令牌;**

你可以通过添加查询字符串来发送url的值。2她的令牌有一些加密值。
将mailBody放入邮件正文参数中。ex ":* "嗨"+ userdata. getFirstname()+"\n\n您已从X应用程序请求新密码。请使用以下链接登录。"+"\n\n单击链接:"+邮件正文);*
上面是你必须传递给邮件服务的参数字符串。邮件服务接受参数,如from,to,subject,body。这里我给出了body,www.example.com应该如何根据你的强制转换传递from,to,subject值be.you pass the from ,to,subject values according to your cast

wvmv3b1j

wvmv3b1j5#

你可以做正确的事这对我很有效。

public  class SendEmail
 {
   public void getEmail(String to,String from, String userName,String password,Properties props,String subject,String messageBody)
  {
      MimeBodyPart mimeBodyPart=new MimeBodyPart();
      mimeBodyPart.setContent(messageBody,"text/html");
      MimeMultipart multipart=new MimeMultipart();
      multipart.addBodyPart(mimeBodyPart);
      Session session=Session.getInstance(props,new Authenticator()
        {
          protected PasswordAuthentication getPasswordAuthentication()
           {
              return new PasswordAuthentication(userName,password);
           }
       });
         try{
              MimeMessage message=new MimeMessage(session);
              message.setFrom(new InternetAddress(from));
              message.setContent(multipart);
              message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
             message.setSubject("Have You got Mail!");
             message.setText(messageBody,"UTF-8","html");
             Transport.send(message);
           }
           catch(MessagingException ex){System.out.println(ex)}
      public static void main(String arg[]){
         SendEmail sendEmail=new SendEmail();
           String to = "XXXXXXX@gmail.com";      
           String from = "XXXXXXXX@gmail.com";
           final String username = "XXXXX@gmail.com";
           final String password = "XXXX";
            String subject="Html Template";

          String body = "<i> Congratulations!</i><br>";
          body += "<b>Your Email is working!</b><br>";
          body += "<font color=red>Thank </font>";
          String host = "smtp.gmail.com";
          Properties props = new Properties();
          props.put("mail.smtp.auth", "true");
          props.put("mail.smtp.starttls.enable", "true");
          props.put("mail.smtp.host", host);
          props.put("mail.smtp.port", "587");
          sendEmail.getEmail(to,from,username,password,props,subject,body);
     }
  }

相关问题