11 Temmuz 2008 Cuma

CakePHP ve veritabanı utf-8 Encoding problemi...

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');

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;

}
}