আমি কীভাবে একটি HTML ইমেল প্রেরণ করব?


117

আমি জেএমএস ব্যবহার করে আমার ওয়েব অ্যাপ্লিকেশনটিতে সফলভাবে ইমেল পাঠিয়েছি, তবে ফলাফলটি কেবল প্লেইন পাঠ্যে প্রদর্শিত হয়। আমি লিখিত সামগ্রীটি এইচটিএমএল প্রদর্শন করতে সক্ষম হতে চাই। আমি এটা কিভাবে করব? এখানে আমার কাছে মোটামুটি রয়েছে:

Message msg = new MimeMessage(mailSession);
try{
    msg.setSubject("Test Notification");
    msg.setRecipient(Message.RecipientType.TO, new InternetAddress(sentTo, false));
    String message = "<div style=\"color:red;\">BRIDGEYE</div>";
    msg.setContent(message, "text/html; charset=utf-8");
    msg.setSentDate(new Date());
    Transport.send(msg);
}catch(MessagingException me){
    logger.log(Level.SEVERE, "sendEmailNotification: {0}", me.getMessage());
}

উত্তর:


264

জাভাডোক অনুসারে, আপনার প্রয়োজনের সময় MimeMessage#setText()সেটগুলি একটি ডিফল্ট মাইম প্রকার সেট করে । পরিবর্তে ব্যবহার করুন।text/plaintext/htmlMimeMessage#setContent()

message.setContent(someHtmlMessage, "text/html; charset=utf-8");

অতিরিক্ত বিশদের জন্য দেখুন:


ধন্যবাদ, প্রথমে আমি মনোযোগ দিয়ে পড়িনি, আমি সেটটেক্সট এবং সেটকন্টেন্ট একসাথে করেছি, সুতরাং এটি কাজ করে না, তবে এখন সেটটেক্সট () বের করার পরে এটি এখন কাজ করে। ধন্যবাদ.
থাং ফাম


13

আপনি যদি গুগল অ্যাপ ইঞ্জিন / জাভা ব্যবহার করে থাকেন তবে নিম্নলিখিতগুলি ব্যবহার করুন ...

MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(SENDER_EMAIL_ADDRESS, "Admin"));
msg.addRecipient(Message.RecipientType.TO,
                 new InternetAddress(toAddress, "user");

msg.setSubject(subject,"UTF-8");

Multipart mp = new MimeMultipart();
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(message, "text/html");
mp.addBodyPart(htmlPart);
msg.setContent(mp);
Transport.send(msg);

msg.setSubject(subject,"UTF-8");কাজ করে না. এটি হওয়া উচিতmsg.setSubject(subject);
ফাইজার খান


5

জাভামেল সংস্করণ ১.৪ থেকে যেহেতু setTextপদ্ধতিটির একটি ওভারলোড রয়েছে যা উপপ্রকারটি গ্রহণ করে।

// Passing null for second argument in order for the method to determine
// the actual charset on-the fly.
// If you know the charset, pass it. "utf-8" should be fine
msg.setText( message, null, "html" );



0

গুগল (জিমেইল) অ্যাকাউন্ট ব্যবহার করে ইমেল প্রেরণের জন্য আপনি একটি সম্পূর্ণ এবং খুব সাধারণ জাভা ক্লাস পেতে পারেন, জাভা অ্যাপ্লিকেশন ব্যবহার করে ইমেল বার্তা প্রেরণ করুন

এটি নিম্নলিখিত বৈশিষ্ট্য ব্যবহার করে

Properties props = new Properties();
  props.put("mail.smtp.auth", "true");
  props.put("mail.smtp.starttls.enable", "true");
  props.put("mail.smtp.host", "smtp.gmail.com");
  props.put("mail.smtp.port", "587");

2
এটি মোটেই প্রশ্নের ঠিকানা দেয় না। ওপি বিশেষত এইচটিএমএল ইমেল প্রেরণ করতে বলছিল।
বেসিনেটর

0

"লগইনভিও এইচটিএমটি ব্লাডি (বার্তাবাডি পার্ট);" এইচটিএমএল ফর্ম্যাটযুক্ত ডিজাইন করা তথ্য থাকবে তবে মেইলে এটি গ্রহণ করে না।

জাভা - স্ট্রুটস 2

package com.action;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import com.opensymphony.xwork2.Action;
import com.bo.LoginBo;
import com.manager.AttendanceManager;
import com.manager.LoginManager;
import com.manager.SSLEmail;
import com.vo.AttendanceManagementVo;
import com.vo.LeaveManagementVo;
import com.vo.LoginVo;
import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart;

public class InsertApplyLeaveAction implements Action {
private AttendanceManagementVo attendanceManagementVo;

public AttendanceManagementVo getAttendanceManagementVo() {
    return attendanceManagementVo;
}

public void setAttendanceManagementVo(
        AttendanceManagementVo attendanceManagementVo) {
    this.attendanceManagementVo = attendanceManagementVo;
}

@Override
public String execute() throws Exception {
    String empId=attendanceManagementVo.getEmpId();
    String leaveType=attendanceManagementVo.getLeaveType();
    String leaveStartDate=attendanceManagementVo.getLeaveStartDate();
    String leaveEndDate=attendanceManagementVo.getLeaveEndDate();
    String reason=attendanceManagementVo.getReason();
    String employeeName=attendanceManagementVo.getEmployeeName();
    String manageEmployeeId=empId;
    float totalLeave=attendanceManagementVo.getTotalLeave();
    String leaveStatus=attendanceManagementVo.getLeaveStatus();
//  String approverId=attendanceManagementVo.getApproverId();
    attendanceManagementVo.setEmpId(empId);
    attendanceManagementVo.setLeaveType(leaveType);
    attendanceManagementVo.setLeaveStartDate(leaveStartDate);
    attendanceManagementVo.setLeaveEndDate(leaveEndDate);
    attendanceManagementVo.setReason(reason);
    attendanceManagementVo.setManageEmployeeId(manageEmployeeId);
    attendanceManagementVo.setTotalLeave(totalLeave);
    attendanceManagementVo.setLeaveStatus(leaveStatus);
    attendanceManagementVo.setEmployeeName(employeeName);

    AttendanceManagementVo attendanceManagementVo1=new AttendanceManagementVo();
    AttendanceManager attendanceManager=new AttendanceManager();    
    attendanceManagementVo1=attendanceManager.insertLeaveData(attendanceManagementVo);
    attendanceManagementVo1=attendanceManager.getApproverId(attendanceManagementVo);
    String approverId=attendanceManagementVo1.getApproverId();
    String approverEmployeeName=attendanceManagementVo1.getApproverEmployeeName();
    LoginVo loginVo=new LoginVo();
    LoginManager loginManager=new LoginManager();
    loginVo.setEmpId(approverId);
    loginVo=loginManager.getEmailAddress(loginVo);
    String emailAddress=loginVo.getEmailAddress();
    String subject="LEAVE IS SUBMITTED FOR AN APPROVAL BY THE  - " +employeeName;
//  String body =   "Hi "+approverEmployeeName+" ," + "\n" + "\n" +
//          leaveType+" is Applied for "+totalLeave+" days by the  " +employeeName+ "\n" + "\n" +
//          " Employee Name: " + employeeName +"\n" +
//          " Applied Leave Type: " + leaveType +"\n" +
//          " Total Days: " + totalLeave +"\n" + "\n" +
  //        " To view Leave History, Please visit the employee poratal or copy and paste the below link in your browser: " + "\n" +  

  //        " NOTE : This is an automated message. Please do not reply."+ "\n" +  "\n" +                        

    Session session = null;

    MimeBodyPart messageBodyPart = new MimeBodyPart();
    MimeMessage message = new MimeMessage(session);
    Multipart multipart = new MimeMultipart();

    String htmlText = ("<div style=\"color:red;\">BRIDGEYE</div>");
    messageBodyPart.setContent(htmlText, "text/html");

    loginVo.setHtmlBody(messageBodyPart);

    message.setContent(multipart);
    Transport.send(message);


    loginVo.setSubject(subject);
//  loginVo.setBody(body);
    loginVo.setEmailAddress(emailAddress);
    SSLEmail sSSEmail=new SSLEmail();
    sSSEmail.sendEmail(loginVo);
    return "success";
 }

 }

0

আমি এইভাবে নিশ্চিত হয়েছি যে এটি সমস্ত সিএসএস আদিমদের জন্য কাজ করে

"পাঠ্য / এইচটিএমএল" তে শিরোনামের সম্পত্তি "সামগ্রী-প্রকার" সেট করে

mimeMessage.setHeader("Content-Type", "text/html");

এখন আমি মত জিনিস করতে পারেন

mimeMessage.setHeader("Content-Type", "text/html");

mimeMessage.setText ("`<html><body><h1 style =\"color:blue;\">My first Header<h1></body></html>`")

শুভেচ্ছা সহ


0

আপনি এখান থেকে সেটটেক্সট (java.lang.String পাঠ্য, বুলিয়ান এইচটিএমএল) ব্যবহার করতে পারেন MimeMessageHelper:

MimeMessage mimeMsg = javaMailSender.createMimeMessage();
MimeMessageHelper msgHelper = new MimeMessageHelper(mimeMsg, false, "utf-8");
boolean isHTML = true;
msgHelper.setText("<h1>some html</h1>", isHTML);

তবে আপনার দরকার:

mimeMsg.saveChanges();

আগে:

javaMailSender.send(mimeMsg);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.