javax.mail.internet.MimeMessage类的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(19.2k)|赞(0)|评价(0)|浏览(634)

本文整理了Java中javax.mail.internet.MimeMessage类的一些代码示例,展示了MimeMessage类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。MimeMessage类的具体详情如下:
包路径:javax.mail.internet.MimeMessage
类名称:MimeMessage

MimeMessage介绍

[英]This class represents a MIME style email message. It implements the Message abstract class and the MimePart interface.

Clients wanting to create new MIME style messages will instantiate an empty MimeMessage object and then fill it with appropriate attributes and content.

Service providers that implement MIME compliant backend stores may want to subclass MimeMessage and override certain methods to provide specific implementations. The simplest case is probably a provider that generates a MIME style input stream and leaves the parsing of the stream to this class.

MimeMessage uses the InternetHeaders class to parse and store the top level RFC 822 headers of a message.

The mail.mime.address.strict session property controls the parsing of address headers. By default, strict parsing of address headers is done. If this property is set to "false", strict parsing is not done and many illegal addresses that sometimes occur in real messages are allowed. See the InternetAddress class for details.
A note on RFC 822 and MIME headers

RFC 822 header fields must contain only US-ASCII characters. MIME allows non ASCII characters to be present in certain portions of certain headers, by encoding those characters. RFC 2047 specifies the rules for doing this. The MimeUtility class provided in this package can be used to to achieve this. Callers of the setHeader, addHeader, and addHeaderLine methods are responsible for enforcing the MIME requirements for the specified headers. In addition, these header fields must be folded (wrapped) before being sent if they exceed the line length limitation for the transport (1000 bytes for SMTP). Received headers may have been folded. The application is responsible for folding and unfolding headers as appropriate.
[中]此类表示MIME样式的电子邮件消息。它实现Message抽象类和MimePart接口。
想要创建新MIME风格消息的客户端将实例化一个空的MimeMessage对象,然后用适当的属性和内容填充它。
实现MIME兼容后端存储的服务提供商可能希望将MimeMessage子类化,并覆盖某些方法以提供特定的实现。最简单的情况可能是一个提供程序,它生成一个MIME样式的输入流,并将流的解析留给这个类。
MimeMessage使用InternetHeaders类来解析和存储消息的顶级RFC 822头。
mail.mime.address.strict会话属性控制地址头的解析。默认情况下,会对地址头进行严格的解析。如果此属性设置为"false",则不会进行严格的解析,并且允许在实际消息中有时出现许多非法地址。有关详细信息,请参见InternetAddress类。
关于rfc822和MIME头的一点注记
RFC 822标头字段必须仅包含US-ASCII字符。MIME通过对非ASCII字符进行编码,允许非ASCII字符出现在某些标头的某些部分中。RFC 2047规定了执行此操作的规则。这个包中提供的MimeUtility类可以用来实现这一点。setHeaderaddHeaderaddHeaderLine方法的调用方负责对指定的头强制执行MIME要求。此外,如果这些头字段超过传输的行长度限制(SMTP为1000字节),则在发送前必须折叠(包装)这些头字段。收到的标题可能已折叠。应用程序负责根据需要折叠和展开标题。

代码示例

代码示例来源:origin: networknt/light-4j

/**
 * Send email with a string content.
 *
 * @param to destination email address
 * @param subject email subject
 * @param content email content
 * @throws MessagingException message exception
 */
public void sendMail (String to, String subject, String content) throws MessagingException {
  Properties props = new Properties();
  props.put("mail.smtp.user", emailConfg.getUser());
  props.put("mail.smtp.host", emailConfg.getHost());
  props.put("mail.smtp.port", emailConfg.getPort());
  props.put("mail.smtp.starttls.enable","true");
  props.put("mail.smtp.debug", emailConfg.getDebug());
  props.put("mail.smtp.auth", emailConfg.getAuth());
  props.put("mail.smtp.ssl.trust", emailConfg.host);
  SMTPAuthenticator auth = new SMTPAuthenticator(emailConfg.getUser(), (String)secret.get(SecretConstants.EMAIL_PASSWORD));
  Session session = Session.getInstance(props, auth);
  MimeMessage message = new MimeMessage(session);
  message.setFrom(new InternetAddress(emailConfg.getUser()));
  message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
  message.setSubject(subject);
  message.setContent(content, "text/html");
  // Send message
  Transport.send(message);
  if(logger.isInfoEnabled()) logger.info("An email has been sent to " + to + " with subject " + subject);
}

代码示例来源:origin: stackoverflow.com

Properties mailProps = new Properties();
mailProps.put("mail.smtp.from", from);
mailProps.put("mail.smtp.host", smtpHost);
mailProps.put("mail.smtp.port", port);
mailProps.put("mail.smtp.auth", true);
mailProps.put("mail.smtp.socketFactory.port", port);
message.setFrom(new InternetAddress(from));
String[] emails = { recipient };
InternetAddress dests[] = new InternetAddress[emails.length];
for (int i = 0; i < emails.length; i++) {
  dests[i] = new InternetAddress(emails[i].trim().toLowerCase());
message.setRecipients(Message.RecipientType.TO, dests);
message.setSubject(subject, "UTF-8");
Multipart mp = new MimeMultipart();
MimeBodyPart mbp = new MimeBodyPart();
mbp.setContent(body, "text/html;charset=utf-8");
mp.addBodyPart(mbp);
message.setContent(mp);
message.setSentDate(new java.util.Date());

代码示例来源:origin: stackoverflow.com

String from = "user name";
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", from);
props.put("mail.smtp.password", "asdfgh");
props.put("mail.smtp.port", "587"); // 587 is the port number of yahoo mail
props.put("mail.smtp.auth", "true");
message.setFrom(new InternetAddress(from));
while (to_address[i] != null) {
  message.addRecipient(Message.RecipientType.TO, to_address[i]);
  i++;
message.setSubject("sending in a group");
message.setText("Welcome to JavaMail");
Transport transport = session.getTransport("smtp");
transport.connect("smtp.mail.yahoo.co.in", "user name", "asdfgh");
transport.sendMessage(message, message.getAllRecipients());
transport.close();

代码示例来源:origin: gocd/gocd

public MimeMessage createMessage(String from, String to, String subject, String body)
    throws MessagingException {
  MimeMessage msg = new MimeMessage(session);
  msg.setFrom(new InternetAddress(from));
  msg.setRecipients(TO, to);
  msg.setSubject(subject);
  msg.setContent(msg, "text/plain");
  msg.setSentDate(new Date());
  msg.setText(body);
  msg.setSender(new InternetAddress(from));
  msg.setReplyTo(new InternetAddress[]{new InternetAddress(from)});
  return msg;
}

代码示例来源:origin: blynkkk/blynk-server

private void send(String to, String subj, String body, String contentType) throws Exception {
  MimeMessage message = new MimeMessage(session);
  message.setFrom(from);
  message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
  message.setSubject(subj, "UTF-8");
  message.setContent(body, contentType);
  Transport.send(message);
  log.trace("Mail to {} was sent. Subj : {}, body : {}", to, subj, body);
}

代码示例来源:origin: blynkkk/blynk-server

private void send(String to, String subj, String body, String contentType) throws Exception {
  MimeMessage message = new MimeMessage(session);
  message.setFrom(from);
  message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
  message.setSubject(subj, "UTF-8");
  message.setContent(body, contentType);
  try (Transport transport = session.getTransport()) {
    transport.connect(host, username, password);
    transport.sendMessage(message, message.getAllRecipients());
  }
  log.debug("Mail sent to {}. Subj: {}", to, subj);
  log.trace("Mail body: {}", body);
}

代码示例来源:origin: JpressProjects/jpress

private Message createMessage() {
  Properties props = new Properties();
  props.setProperty("mail.transport.protocol", "smtp");
  props.setProperty("mail.smtp.auth", "true");
  props.setProperty("mail.smtp.host", host);
  props.setProperty("mail.smtp.port", "25");
  if (useSSL) {
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.setProperty("mail.smtp.port", "465");
  }
  // error:javax.mail.MessagingException: 501 Syntax: HELO hostname
  props.setProperty("mail.smtp.localhost", "127.0.0.1");
  Session session = Session.getInstance(props, this);
  Message message = new MimeMessage(session);
  try {
    message.setFrom(new InternetAddress(MimeUtility.encodeText(name) + "<" + name + ">"));
  } catch (Exception e) {
    logger.error(e.getMessage(), e);
  }
  return message;
}

代码示例来源:origin: stackoverflow.com

this.password = password;   
Properties props = new Properties();   
props.setProperty("mail.transport.protocol", "smtp");   
props.setProperty("mail.host", mailhost);   
props.put("mail.smtp.auth", "true");   
props.put("mail.smtp.port", "465");   
props.put("mail.smtp.socketFactory.port", "465");   
props.put("mail.smtp.socketFactory.class",   
    "javax.net.ssl.SSLSocketFactory");   
MimeMessage message = new MimeMessage(session);   
DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));   
message.setSender(new InternetAddress(sender));   
message.setSubject(subject);   
message.setDataHandler(handler);   
if (recipients.indexOf(',') > 0)   
  message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));   
else  
  message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));   
Transport.send(message);   
}catch(Exception e){

代码示例来源:origin: pentaho/pentaho-kettle

Properties props = new Properties();
 props.put( "mail.smtp.host", ArgList[0] );
 Session session = Session.getDefaultInstance( props, null );
 session.setDebug( debug );
 Message msg = new MimeMessage( session );
 InternetAddress addressFrom = new InternetAddress( (String) ArgList[1] );
 msg.setFrom( addressFrom );
  addressTo[i] = new InternetAddress( strArrRecipients[i] );
 Transport.send( msg );
} catch ( Exception e ) {
 throw new RuntimeException( "sendMail: " + e.toString() );

代码示例来源:origin: stackoverflow.com

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.put("mail.debug", "true");  
props.put("mail.smtp.socketFactory.port", "465");  
props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");  
Transport transport = session.getTransport();  
InternetAddress addressFrom = new InternetAddress(from);  
message.setSender(addressFrom);  
message.setSubject(subject);  
message.setContent(msg, "text/plain");  
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));  
transport.connect();  
Transport.send(message);  
transport.close();

代码示例来源:origin: pentaho/pentaho-kettle

Properties props = new Properties();
if ( Utils.isEmpty( server ) ) {
 logError( BaseMessages.getString( PKG, "JobMail.Error.HostNotSpecified" ) );
 if ( secureConnectionType.equals( "TLS" ) ) {
  props.put( "mail.smtp.starttls.enable", "true" );
 } else {
  props.put( "mail.smtps.quitwait", "false" );
Session session = Session.getInstance( props );
session.setDebug( log.isDebug() );
 Message msg = new MimeMessage( session );
   sender_address = sender_name + '<' + sender_address + '>';
 MimeMultipart parts = new MimeMultipart();
 MimeBodyPart part1 = new MimeBodyPart(); // put the text in the
 parts.addBodyPart( part1 );
  transport = session.getTransport( protocol );
  String authPass = getPassword( authenticationPassword );
   transport.connect();

代码示例来源:origin: javaee-samples/javaee7-samples

out.println("<h1>Sending email using JavaMail API</h1>");
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.transport.protocol", "smtp");
props.put("mail.debug", "true");
Session session = Session.getInstance(props,
  new javax.mail.Authenticator() {
    @Override
    + "\"...<br>");
  Message message = new MimeMessage(session);
  message.setFrom(new InternetAddress(creds.getFrom()));
  message.setRecipients(Message.RecipientType.TO,
    InternetAddress.parse(creds.getTo()));
  message.setSubject("Sending message using Programmatic JavaMail " + Calendar.getInstance().getTime());
  message.setText("Java EE 7 is cool!");
  Transport.send(message, message.getAllRecipients());

代码示例来源:origin: shopizer-ecommerce/shopizer

impl.setPassword(emailConfig.getPassword());
  Properties prop = new Properties();
  prop.put("mail.smtp.auth", emailConfig.isSmtpAuth());
  prop.put("mail.smtp.starttls.enable", emailConfig.isStarttls());
  impl.setJavaMailProperties(prop);
mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
InternetAddress inetAddress = new InternetAddress();
inetAddress.setPersonal(eml);
inetAddress.setAddress(from);
mimeMessage.setFrom(inetAddress);
mimeMessage.setSubject(subject);
Multipart mp = new MimeMultipart("alternative");
BodyPart textPart = new MimeBodyPart();
freemarkerMailConfiguration.setClassForTemplateLoading(HtmlEmailSenderImpl.class, "/");
Template textTemplate = freemarkerMailConfiguration.getTemplate(new StringBuilder(TEMPLATE_PATH).append("").append("/").append(tmpl).toString());
BodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(htmlContent);
mp.addBodyPart(htmlPart);
mimeMessage.setContent(mp);

代码示例来源:origin: apache/nifi

@Override
public void process(final InputStream rawIn) throws IOException {
  try (final InputStream in = new BufferedInputStream(rawIn)) {
    Properties props = new Properties();
    props.put("mail.mime.address.strict", requireStrictAddresses);
    Session mailSession = Session.getInstance(props);
    MimeMessage originalMessage = new MimeMessage(mailSession, in);
    MimeMessageParser parser = new MimeMessageParser(originalMessage).parse();
    Address[] from = originalMessage.getFrom();
    if (from == null) {
      throw new MessagingException("Message failed RFC-2822 validation: No Sender");
    Date sentDate = originalMessage.getSentDate();
    if (sentDate == null ) {
      Enumeration headers = originalMessage.getAllHeaders();
      while (headers.hasMoreElements()) {
        Header header = (Header) headers.nextElement();
    putAddressListInAttributes(attributes, EMAIL_HEADER_TO, originalMessage.getRecipients(Message.RecipientType.TO));
    putAddressListInAttributes(attributes, EMAIL_HEADER_CC, originalMessage.getRecipients(Message.RecipientType.CC));
    putAddressListInAttributes(attributes, EMAIL_HEADER_BCC, originalMessage.getRecipients(Message.RecipientType.BCC));
    putAddressListInAttributes(attributes, EMAIL_HEADER_FROM, originalMessage.getFrom()); // RFC-2822 specifies "From" as mailbox-list
    if (StringUtils.isNotEmpty(originalMessage.getMessageID())) {
      attributes.put(EMAIL_HEADER_MESSAGE_ID, originalMessage.getMessageID());
    if (originalMessage.getReceivedDate() != null) {
      attributes.put(EMAIL_HEADER_RECV_DATE, originalMessage.getReceivedDate().toString());

代码示例来源:origin: voldemort/voldemort

MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
MimeMultipart multiPartKeys = new MimeMultipart();
ByteArrayOutputStream keysOutputStream = new ByteArrayOutputStream();
  MimeBodyPart keyBody = new MimeBodyPart();
  try {
    keyBody.addHeader(CONTENT_TYPE, "application/octet-stream");
    keyBody.addHeader(CONTENT_TRANSFER_ENCODING, "binary");
    keyBody.addHeader(CONTENT_LOCATION, contentLocationKey);
  } catch(MessagingException me) {
  MimeMultipart multiPartValues = new MimeMultipart();
  for(Versioned<byte[]> versionedValue: entry.getValue()) {
                Integer.toString(responseValue.length));
      multiPartValues.addBodyPart(valueBody);
    } catch(MessagingException me) {
      logger.error("Exception while constructing value body part", me);
message.setContent(multiPartKeys);
message.saveChanges();
try {
  multiPartKeys.writeTo(keysOutputStream);

代码示例来源:origin: bluejoe2008/openwebflow

public void sendMail(String receiver, String subject, String message) throws Exception
  {
    Properties properties = new Properties();
    properties.setProperty("mail.transport.protocol", "smtp");//发送邮件协议
    properties.setProperty("mail.smtp.auth", "true");//需要验证

    Session session = Session.getInstance(properties);
    session.setDebug(false);
    //邮件信息
    Message messgae = new MimeMessage(session);
    messgae.setFrom(new InternetAddress(getMailFrom()));//设置发送人
    messgae.setText(message);//设置邮件内容
    messgae.setSubject(subject);//设置邮件主题
    //发送邮件
    Transport tran = session.getTransport();
    tran.connect(getServerHost(), getServerPort(), getAuthUserName(), getAuthPassword());
    tran.sendMessage(messgae, new Address[] { new InternetAddress(receiver) });//设置邮件接收人
    tran.close();

    Logger.getLogger(this.getClass()).debug(String.format("sent mail to <%s>: %s", receiver, subject));
  }
}

代码示例来源:origin: apache/nifi

@Override
public void process(final InputStream rawIn) throws IOException {
  try (final InputStream in = new BufferedInputStream(rawIn)) {
    Properties props = new Properties();
    props.put("mail.mime.address.strict", requireStrictAddresses);
    Session mailSession = Session.getInstance(props);
    MimeMessage originalMessage = new MimeMessage(mailSession, in);
    MimeMessageParser parser = new MimeMessageParser(originalMessage).parse();
    Address[] from = originalMessage.getFrom();
    if (from == null) {
      throw new MessagingException("Message failed RFC-2822 validation: No Sender");
    Date sentDate = originalMessage.getSentDate();
    if (sentDate == null) {

代码示例来源:origin: magefree/mage

properties.setProperty("mail.smtps.host", config.getMailSmtpHost());
properties.setProperty("mail.smtps.port", config.getMailSmtpPort());
properties.setProperty("mail.smtps.auth", "true");
properties.setProperty("mail.user", config.getMailUser());
properties.setProperty("mail.password", config.getMailPassword());
Session session = Session.getDefaultInstance(properties);
  MimeMessage message = new MimeMessage(session);
  message.setFrom(new InternetAddress(config.getMailFromAddress()));
  message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
  message.setSubject(subject);
  message.setText(text);
  Transport trnsport = session.getTransport("smtps");
  trnsport.connect(null, properties.getProperty("mail.password"));
  message.saveChanges();
  trnsport.sendMessage(message, message.getAllRecipients());
  trnsport.close();

代码示例来源:origin: stackoverflow.com

String oauthToken, boolean debug) throws Exception {
Properties props = new Properties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.starttls.required", "true");
props.put("mail.smtp.sasl.enable", "false");
session = Session.getInstance(props);
session.setDebug(debug);
      message.setSender(new InternetAddress(user));   
      message.setSubject(subject);   
      message.setDataHandler(handler);   
  if (recipients.indexOf(',') > 0)   
    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));   
  else  
    message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));   
  smtpTransport.sendMessage(message, message.getAllRecipients());

代码示例来源:origin: traccar/traccar

properties = getProperties(new PropertiesProvider(user));
Session session = Session.getInstance(properties);
MimeMessage message = new MimeMessage(session);
String from = properties.getProperty("mail.smtp.from");
if (from != null) {
  message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(user.getEmail()));
message.setSubject(subject);
message.setSentDate(new Date());
  Multipart multipart = new MimeMultipart();
  message.setContent(multipart);
} else {
  message.setContent(body, "text/html; charset=utf-8");
try (Transport transport = session.getTransport()) {
  Context.getStatisticsManager().registerMail();
  transport.connect(
      properties.getProperty("mail.smtp.host"),
      properties.getProperty("mail.smtp.username"),
      properties.getProperty("mail.smtp.password"));
  transport.sendMessage(message, message.getAllRecipients());

相关文章

MimeMessage类方法