ラベル JavaMail の投稿を表示しています。 すべての投稿を表示
ラベル JavaMail の投稿を表示しています。 すべての投稿を表示

2011年11月10日木曜日

groovyとjavamailで画像付きHTMLメールを送信する

groovyとjavamailで画像付きHTMLメールを送信するには、以下のコードを実行します。
@Grab(group="javax.mail", module="mail", version="latest.integration")
import java.security.*
import java.util.*
import javax.mail.*
import javax.mail.internet.*
import javax.activation.*
import groovy.xml.*

smtpHost = "smtp.gmail.com"
smtpPort = "465"
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
Properties props = new Properties()
props.put("mail.smtp.host", smtpHost)
props.put("mail.smtp.port", smtpPort)
props.put("mail.smtp.auth", "true")
props.put("mail.smtp.socketFactory.port", smtpPort);
props.put("mail.smtp.socketFactory.class",
  "javax.net.ssl.SSLSocketFactory")
props.put("mail.smtp.socketFactory.fallback", "false")

Session session = Session.getDefaultInstance(props,
  [
    getPasswordAuthentication: {
      return new PasswordAuthentication("youraccount@gmail.com",
        'yourpassword')
    }
  ] as Authenticator
)
Message msg = new MimeMessage(session)
msg.setFrom(new InternetAddress(
  "youraccount@gmail.com","youraccount@gmail.com","iso-2022-jp"))
msg.setRecipients(Message.RecipientType.TO, "recipient@gmail.com")

msg.setSubject("画像付きHTMLメールサンプル","iso-2022-jp")

multipart = new MimeMultipart()
// 本文のパートを作成
bp1 = new MimeBodyPart()
def writer = new StringWriter()
def html = new MarkupBuilder(writer)
html.doubleQuotes = true
html.html {
  body {
    p {
      mkp.yield("画像付きHTMLメールサンプル")
      br()
      img(src:"cid:img1", style:"display:block;")
      br()
      mkp.yield("sanfrancisco")
    }
  }
}
bp1.setContent(writer.toString(),"text/html; charset=iso-2022-jp")
multipart.addBodyPart(bp1)

// 添付ファイルのパートを作成
bp2 = new MimeBodyPart()
fds = new FileDataSource("SF.JPG")
bp2.setFileName(MimeUtility.encodeWord(fds.getName()))
bp2.setDataHandler(new DataHandler(fds))
bp2.setHeader("Content-ID", "<img1>")
multipart.addBodyPart(bp2)

msg.setContent(multipart)
Transport.send(msg)
動作環境
groovy 1.8.2, JDK6 update27

2011年9月29日木曜日

groovyとjavamailで添付ファイル付のメールを送信する

groovyとjavamailで添付ファイル付のメールを送信するには、以下のコードを実行します。
@Grab(group="javax.mail", module="mail", version="latest.integration")
import java.security.*
import java.util.*
import javax.mail.*
import javax.mail.internet.*
import javax.activation.*

smtpHost = "smtp.gmail.com"
smtpPort = "465"
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
Properties props = new Properties()
props.put("mail.smtp.host", smtpHost)
props.put("mail.smtp.port", smtpPort)
props.put("mail.smtp.auth", "true")
props.put("mail.smtp.socketFactory.port", smtpPort);
props.put("mail.smtp.socketFactory.class",
  "javax.net.ssl.SSLSocketFactory")
props.put("mail.smtp.socketFactory.fallback", "false")

Session session = Session.getDefaultInstance(props,
  [
    getPasswordAuthentication: {
      return new PasswordAuthentication("youraccount@gmail.com",
        'yourpassword')
    }
  ] as Authenticator
)
Message msg = new MimeMessage(session)
msg.setFrom(new InternetAddress(
  "youraccount@gmail.com","youraccount@gmail.com","iso-2022-jp"))
msg.setRecipients(Message.RecipientType.TO, "recipient@gmail.com")

msg.setSubject("添付ファイルサンプル","iso-2022-jp")

multipart = new MimeMultipart()
// 本文のパートを作成
bp1 = new MimeBodyPart()
bp1.setText("添付ファイルのサンプル","iso-2022-jp")
multipart.addBodyPart(bp1)

// 添付ファイルのパートを作成
bp2 = new MimeBodyPart()
fds = new FileDataSource("SF.JPG")
bp2.setFileName(MimeUtility.encodeWord(fds.getName()))
bp2.setDataHandler(new DataHandler(fds))
multipart.addBodyPart(bp2)

msg.setContent(multipart)
Transport.send(msg)

動作環境
groovy 1.8.2, JDK6 Update22

2011年9月25日日曜日

groovyとjavamailでHTMLメールを送る

groovyとjavamailでHTMLメールを送るには、以下のコードを実行します。
@Grab(group="javax.mail", module="mail", version="latest.integration")
import java.security.*
import java.util.*
import javax.mail.*
import javax.mail.internet.*
import groovy.xml.*

smtpHost = "smtp.gmail.com"
smtpPort = "465"
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
Properties props = new Properties()
props.put("mail.smtp.host", smtpHost)
props.put("mail.smtp.port", smtpPort)
props.put("mail.smtp.auth", "true")
props.put("mail.smtp.socketFactory.port", smtpPort);
props.put("mail.smtp.socketFactory.class",
  "javax.net.ssl.SSLSocketFactory")
props.put("mail.smtp.socketFactory.fallback", "false")

Session session = Session.getDefaultInstance(props,
  [
    getPasswordAuthentication: {
      return new PasswordAuthentication("youraccount@gmail.com",
        'yourpassword')
    }
  ] as Authenticator
)
Message msg = new MimeMessage(session)
msg.setFrom(new InternetAddress(
  "youraccount@gmail.com","youraccount@gmail.com","iso-2022-jp"))
msg.setRecipients(Message.RecipientType.TO, "recipients@gmail.com")

msg.setSubject("HTMLメールサンプル","iso-2022-jp")
import groovy.xml.*
def writer = new StringWriter()
def html = new MarkupBuilder(writer)
html.doubleQuotes = true
html.html {
  body {
    p {
      mkp.yield("HTMLメールサンプル")
      br()
      a(href:"http://groovyarekore.blogspot.com", "groovyあれこれ")
    }
  }
}
msg.setContent(writer.toString(), "text/html; charset=iso-2022-jp")
Transport.send(msg)

動作環境
groovy 1.8.0, JDK6 Update22

2011年9月17日土曜日

groovyとjavamailでディスクの空き容量をメール通知する

groovyとjavamailでディスクの空き容量をメール通知するには、以下のコードを実行します。
@Grab(group="javax.mail", module="mail", version="latest.integration")
import java.security.*
import java.util.*
import javax.mail.*
import javax.mail.internet.*

smtpHost = "smtp.gmail.com"
smtpPort = "465"
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
Properties props = new Properties()
props.put("mail.smtp.host", smtpHost)
props.put("mail.smtp.port", smtpPort)
props.put("mail.smtp.auth", "true")
props.put("mail.smtp.socketFactory.port", smtpPort);
props.put("mail.smtp.socketFactory.class",
  "javax.net.ssl.SSLSocketFactory")
props.put("mail.smtp.socketFactory.fallback", "false")

Session session = Session.getDefaultInstance(props,
  [
    getPasswordAuthentication: {
      return new PasswordAuthentication("youraccount@gmail.com",
        'yourpassword')
    }
  ] as Authenticator
)
Message msg = new MimeMessage(session)
msg.setFrom(new InternetAddress(
  "youraccount@gmail.com","youraccount@gmail.com","iso-2022-jp"))
msg.setRecipients(Message.RecipientType.TO, "recipient_address@gmail.com")

msg.setSubject("Disk Free Space","iso-2022-jp")
content = "path : free / total size \n"
File.listRoots().each{
  content += it.getAbsolutePath() + " : " +
    String.format("%8.2f", it.getFreeSpace()/1024/1024/1024) + "(G) / " +
    String.format("%8.2f", it.getTotalSpace()/1024/1024/1024) + "(G)\n"
}
msg.setText(content, "iso-2022-jp")
Transport.send(msg)

動作環境
Groovy 1.8.0, JDK6 Update22

2011年6月30日木曜日

groovyとJavaMailでimapプロトコルを使用して指定したラベルのメールを取得する

groovyとJavaMailでimapプロトコルを使用して指定したラベルのメールを取得するには、以下のコードを実行します。

@Grab(group="javax.mail", module="mail", version="latest.integration")
import java.security.*
import java.util.*
import javax.mail.*
import javax.mail.search.*
import javax.mail.internet.*

host = "imap.gmail.com"
port = "993"
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
Properties props = new Properties()
props.put("mail.imap.host", host)
props.put("mail.imap.port", port)
props.put("mail.imap.socketFactory.port", port);
props.put("mail.imap.socketFactory.class",
"javax.net.ssl.SSLSocketFactory")
props.put("mail.imap.socketFactory.fallback", "false")

Session session = Session.getDefaultInstance(props,
[
getPasswordAuthentication: {
return new PasswordAuthentication("youraccount@gmail.com",
'yourpassword')
}
] as Authenticator
)
Store store = null
try
{
store = session.getStore("imap")
store.connect()
// スター付きの場合
// folder = store.getFolder("[Gmail]/スター付き")
// ラベルの場合
folder = store.getFolder("test")
folder.open(Folder.READ_ONLY)

for( message in folder.getMessages() ){
// 題名
println("subject:" + message.getSubject())
// 送信日付
println("date:" + message.getSentDate())
// from
println("from:" + message.getFrom()[0].getAddress())
println("content-type:" + message.getContentType())
if( message.getContentType().toLowerCase().startsWith("text/plain") ){
// テキスト形式
println("content:" + message.getContent())
} else {
if( message.getContent() instanceof Multipart){
// Multipartの場合
mp = message.getContent()
for(int ip=0;ip<mp.getCount();ip++){
println("content-type:" + mp.getBodyPart(ip).getContentType())
disposition = mp.getBodyPart(ip).getDisposition()?.toLowerCase()
if( !disposition.equals(Part.ATTACHMENT) &&
!disposition.equals(Part.INLINE) ){
println("content:" + mp.getBodyPart(ip).getContent())
}
}
}
}
}
folder.close(false)
}
finally
{
if( store != null )store.close()
}



動作環境
groovy 1.8.0, OpenJDK1.6.0_22

2011年6月29日水曜日

groovyとJavaMailでimapプロトコルを使用して指定した受信日以降のメールを取得する

groovyとJavaMailでimapプロトコルを使用して指定した受信日以降のメールを取得するには、以下のコードのようにReceivedDateTermクラスを使用します。

@Grab(group="javax.mail", module="mail", version="latest.integration")
import java.security.*
import java.util.*
import javax.mail.*
import javax.mail.search.*
import javax.mail.internet.*

host = "imap.gmail.com"
port = "993"
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
Properties props = new Properties()
props.put("mail.imap.host", host)
props.put("mail.imap.port", port)
props.put("mail.imap.socketFactory.port", port);
props.put("mail.imap.socketFactory.class",
"javax.net.ssl.SSLSocketFactory")
props.put("mail.imap.socketFactory.fallback", "false")

Session session = Session.getDefaultInstance(props,
[
getPasswordAuthentication: {
return new PasswordAuthentication("youraccount@gmail.com",
'yourpassword')
}
] as Authenticator
)
Store store = null
try
{
store = session.getStore("imap")
store.connect()
folder = store.getFolder("INBOX")
folder.open(Folder.READ_ONLY)

for( message in folder.search(
new ReceivedDateTerm(ComparisonTerm.GE,
new GregorianCalendar(2011,6-1,25).getTime()
)) ){
// 題名
println("subject:" + message.getSubject())
// 送信日付
println("date:" + message.getSentDate())
// from
println("from:" + message.getFrom()[0].getAddress())
println("content-type:" + message.getContentType())
if( message.getContentType().toLowerCase().startsWith("text/plain") ){
// テキスト形式
println("content:" + message.getContent())
} else {
if( message.getContent() instanceof Multipart){
// Multipartの場合
mp = message.getContent()
for(int ip=0;ip<mp.getCount();ip++){
println("content-type:" + mp.getBodyPart(ip).getContentType())
disposition = mp.getBodyPart(ip).getDisposition()?.toLowerCase()
if( !disposition.equals(Part.ATTACHMENT) &&
!disposition.equals(Part.INLINE) ){
println("content:" + mp.getBodyPart(ip).getContent())
}
}
}
}
}
folder.close(false)
}
finally
{
if( store != null )store.close()
}



動作環境
groovy 1.8.0, OpenJDK1.6.0_22

2011年6月28日火曜日

groovyとJavaMailでimapプロトコルを使用してメールにラベルを適用する

groovyとJavaMailでimapプロトコルを使用して、題名から検索したメールにラベルを適用するには、以下のコードを実行します。

@Grab(group="javax.mail", module="mail", version="latest.integration")
import java.security.*
import java.util.*
import javax.mail.*
import javax.mail.search.*
import javax.mail.internet.*

host = "imap.gmail.com"
port = "993"
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
Properties props = new Properties()
props.put("mail.imap.host", host)
props.put("mail.imap.port", port)
props.put("mail.imap.socketFactory.port", port);
props.put("mail.imap.socketFactory.class",
"javax.net.ssl.SSLSocketFactory")
props.put("mail.imap.socketFactory.fallback", "false")

Session session = Session.getDefaultInstance(props,
[
getPasswordAuthentication: {
return new PasswordAuthentication("youraccount@gmail.com",
'yourpassword')
}
] as Authenticator
)
Store store = null
try
{
store = session.getStore("imap")
store.connect()
folder = store.getFolder("INBOX")
tfolder = store.getDefaultFolder().list("サンプル")
if( tfolder.length == 0 ){
println("target folder is not found.")
return;
}
folder.open(Folder.READ_ONLY)
// 題名にsampleが含まれるメッセージにラベルを適用
folder.copyMessages(folder.search(new SubjectTerm("sample")), tfolder[0])
folder.close(false)
}
finally
{
if( store != null )store.close()
}



動作環境
groovy 1.8.0, OpenJDK1.6.0_22

2011年6月27日月曜日

groovyとJavaMailでimapプロトコルを使用してgmailのラベルをリネームする

groovyとJavaMailでimapプロトコルを使用してgmailのラベルをリネームするには、以下のコードを実行します。

@Grab(group="javax.mail", module="mail", version="latest.integration")
import java.security.*
import java.util.*
import javax.mail.*
import javax.mail.search.*
import javax.mail.internet.*

host = "imap.gmail.com"
port = "993"
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
Properties props = new Properties()
props.put("mail.imap.host", host)
props.put("mail.imap.port", port)
props.put("mail.imap.socketFactory.port", port);
props.put("mail.imap.socketFactory.class",
"javax.net.ssl.SSLSocketFactory")
props.put("mail.imap.socketFactory.fallback", "false")

Session session = Session.getDefaultInstance(props,
[
getPasswordAuthentication: {
return new PasswordAuthentication("youraccount@gmail.com",
'yourpassword')
}
] as Authenticator
)
Store store = null
try
{
store = session.getStore("imap")
store.connect()
oldfolder = store.getDefaultFolder().list("sample")
if(oldfolder == null || oldfolder.length == 0)return
Folder newfolder = store.getDefaultFolder().getFolder("サンプル")
result = oldfolder[0].renameTo(newfolder)
println("rename to new folder: result=${result}")
}
finally
{
if( store != null )store.close()
}


動作環境
groovy 1.8.0, OpenJDK1.6.0_22