Cake 1.2 beta ya kadar, encoding sorununu aşağıdaki şekilde çözmüştüm :
class AppModel extends Model{
function __construct() {
Configure::write('debug', 3);
$this->execute("SET NAMES UTF8");
parent::__construct();
}
}
Ancak 1.2 Beta'da sorun çıktı, ve artık database.php de değişiklik yapmak gerekiyor:
var $default = array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => 'localhost', 'login' => 'login',
'password' => 'password',
'database' => 'database',
'prefix' => '',
'encoding' => 'utf8');
11 Temmuz 2008 Cuma
2 Temmuz 2008 Çarşamba
Java : HTML e-posta atarken, içine resim nasıl eklenir ?
Java : HTML e-posta atarken, içine resim nasıl eklenir ?
Java ile e-posta atmak çok basit bir işlem ancak, işin içine HTML ve resim olunca işler biraz değişiyor. Aşağıdaki örnekde nasıl olduğunu görebilirsiniz.
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
public class EmailSender {
String username = ""; // e-mail server username ile değişecek
String password = ""; // e-mail server password ile değişecek
private class SMTPAuthenticator extends javax.mail.Authenticator {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}
public static void main(String[] args) {
EmailSender emailSender = new EmailSender();
Properties props = System.getProperties();
SMTPAuthenticator authenticator = emailSender.new SMTPAuthenticator();
props.put("mail.smtp.host", "email server"); // E-posta sunucusunun
// adresi ile değişecek
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props, authenticator);
MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress("from")); // gönderen adresi
// ile
// değiştirilecek
message.addRecipient(Message.RecipientType.TO, new InternetAddress("TO")); // alıcı
// adresi
// ile
// değiştirilecek
message.setSubject("subject"); // Konu ile değiştirilecek
message.setSentDate(new Date());
message.setContent(emailSender.prepareHTMLMailWithImage());
Transport.send(message);
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private Multipart prepareHTMLMailWithImage() throws MessagingException, URISyntaxException {
Multipart multipart = new MimeMultipart("alternative"); // Hazırladığımız HTML i kabul etmeyen client için ek olarak plaintext gönderiyoruz
MimeBodyPart mimeBodyPartPlain = new MimeBodyPart();
// Düz metin
String mailText = "Message text";
mimeBodyPartPlain.setDataHandler(new DataHandler(mailText, "text/plain; charset=UTF-8 "));
multipart.addBodyPart(mimeBodyPartPlain);
// Düz metin sonu
MimeBodyPart mimeBodyPartHtml = new MimeBodyPart();
String mailHtml = "HTML H1 HTML Message Text/H1 img src=cid:1@deneme align=\"right\" width=100 height=35/HTML";
mimeBodyPartHtml.setContent(mailHtml, "text/html; charset=UTF-8 ");
MimeBodyPart mimeBodyPartImage = new MimeBodyPart();
URL url = this.getClass().getResource("/img/your.jpg"); // com ile aynı düzeyde olacak bir dizin
try {
mimeBodyPartImage.setDataHandler(new DataHandler(new ByteArrayDataSource(url.openStream(), "image/jpg")));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mimeBodyPartImage.setHeader("Content-ID", "<1@deneme>");
multipart.addBodyPart(mimeBodyPartHtml);
multipart.addBodyPart(mimeBodyPartImage);
return multipart;
}
}
Java ile e-posta atmak çok basit bir işlem ancak, işin içine HTML ve resim olunca işler biraz değişiyor. Aşağıdaki örnekde nasıl olduğunu görebilirsiniz.
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
public class EmailSender {
String username = ""; // e-mail server username ile değişecek
String password = ""; // e-mail server password ile değişecek
private class SMTPAuthenticator extends javax.mail.Authenticator {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}
public static void main(String[] args) {
EmailSender emailSender = new EmailSender();
Properties props = System.getProperties();
SMTPAuthenticator authenticator = emailSender.new SMTPAuthenticator();
props.put("mail.smtp.host", "email server"); // E-posta sunucusunun
// adresi ile değişecek
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props, authenticator);
MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress("from")); // gönderen adresi
// ile
// değiştirilecek
message.addRecipient(Message.RecipientType.TO, new InternetAddress("TO")); // alıcı
// adresi
// ile
// değiştirilecek
message.setSubject("subject"); // Konu ile değiştirilecek
message.setSentDate(new Date());
message.setContent(emailSender.prepareHTMLMailWithImage());
Transport.send(message);
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private Multipart prepareHTMLMailWithImage() throws MessagingException, URISyntaxException {
Multipart multipart = new MimeMultipart("alternative"); // Hazırladığımız HTML i kabul etmeyen client için ek olarak plaintext gönderiyoruz
MimeBodyPart mimeBodyPartPlain = new MimeBodyPart();
// Düz metin
String mailText = "Message text";
mimeBodyPartPlain.setDataHandler(new DataHandler(mailText, "text/plain; charset=UTF-8 "));
multipart.addBodyPart(mimeBodyPartPlain);
// Düz metin sonu
MimeBodyPart mimeBodyPartHtml = new MimeBodyPart();
String mailHtml = "HTML H1 HTML Message Text/H1 img src=cid:1@deneme align=\"right\" width=100 height=35/HTML";
mimeBodyPartHtml.setContent(mailHtml, "text/html; charset=UTF-8 ");
MimeBodyPart mimeBodyPartImage = new MimeBodyPart();
URL url = this.getClass().getResource("/img/your.jpg"); // com ile aynı düzeyde olacak bir dizin
try {
mimeBodyPartImage.setDataHandler(new DataHandler(new ByteArrayDataSource(url.openStream(), "image/jpg")));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mimeBodyPartImage.setHeader("Content-ID", "<1@deneme>");
multipart.addBodyPart(mimeBodyPartHtml);
multipart.addBodyPart(mimeBodyPartImage);
return multipart;
}
}
Kaydol:
Kayıtlar (Atom)