自分のGmailアカウントにファイル保管(Javaソースコード)
ファイルの手軽なバックアップ手段として、cronで定期的に自分のGmailアカウント(Google AppsでもOK)へ飛ばすってのが便利です。送信メール容量の上限は(たぶん圧縮後サイズで)10MBです。
コマンドラインのメールクライアントにGmail用の設定すりゃいいんですが、方法調べるのも面倒なので、Javaで書いて(ていうか手元にあったモノを数行書き換えて)済ませちゃいました。使う人いるかもしれないので、置いときます。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;public class GmailStorage {
public static void main(String[] args) throws MessagingException, FileNotFoundException {
final String _file = args[0];
final String _contentType = args[1];
String email = "myaccount@gmail.com";
String passwd = "mypassword";Properties prop = new Properties();
prop.put("mail.smtp.host", "smtp.gmail.com");
prop.put("mail.smtp.port", "587");
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.starttls.enable", "true");Transport transport = null;
try {
Session sess = Session.getInstance(prop);
MimeMessage mm = new MimeMessage(sess);
mm.setFrom(new InternetAddress(email));
mm.setSubject(_file);
mm.setRecipient(Message.RecipientType.TO, new InternetAddress(email));
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText("File attached.", "ISO-2022-JP");
MimeBodyPart mbp2 = new MimeBodyPart();
mbp2.setDataHandler(new DataHandler(new DataSource() {
public String getContentType() {
return _contentType;
}
public InputStream getInputStream() throws IOException {
return new FileInputStream(new java.io.File(_file));
}
public String getName() {
return _file;
}
public OutputStream getOutputStream() throws IOException {
throw new IOException();
}
}));
mbp2.setFileName(_file);
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
mm.setContent(mp);transport = sess.getTransport("smtp");
transport.connect(email, passwd);
transport.sendMessage(mm, mm.getAllRecipients());
}
finally {
if (transport != null) {
transport.close();
}
}
}
}