RFC 822 Nedir?
Bu ilk e-posta standardında, bir mesaj header ve body olarak ikiye ayrılmıştır. Header'ın şekli belirlenmiş ancak Body'nin şekli belirsiz bırakılmış. Sadece 7 bit ASCII olmasına karar verilmiş.
Ancak daha sonra RFC822'ye eklentiler yapılmış ve MIME ile body kısmının şekli belirlenmiş.
Yani MIME içeriğin şeklini tanımlar.
multipart/mixed nedir
Farklı tiplerde nesnelerin - mesela text + eklenti - gönderildiği anlamına gelir.
multipart/alternative nedir
Aynı bilginin farklı gösterim şeklidir. Örneğin text olarak gönderilen metnin alternatifi html de olabilir. Bu durumda şöyle bir blok içinde göndeririz.
Session
Örnek:
Session
Message veya ondan türeyen MimeMessage sınıfı constructor metodu içine Session nesnesi alırlar. Bu nesne bağlantı bilgilerini içerir.
getDefaultInstance
Default doldurulmuş bir session nesnesi döner. Örnek:
getInstance
Session açma örneği:
InternetAddress
Bu sınıf alıcının adresi temsil ediliyor.
validate
Verilen adresin doğru olup olmadığı kontrol edilir. Örnek:
javax.mail.internet.MimeMessage
Bu sınıf bir e-mail'in kimden geldiği, kime gittiği gibi bilgileri içerir. Content olarak sadece metin içerebilir. Bu durumda RFC822'nin ilk halini gerçekleştirimiş olur. Veya content olarak MimeMultipart sınıfını da kullanabilir. MimeMultipart sınıfı ise MimeBodyPart sınıflarını içeren bir yapı.
Aşağıda html e-posta gönderme örneği var. Örneği buradan aldım.
Eklenti parçalarını içeren kısım. Aşağıdaki şekilde görülebilir.
getCount ve getBodyPart
Bu metodlar ile parçalar alınabilir. Her parçanın BodyPart sınıfından türemek zorundadır.
javax.mail.internet.MimeMultiPart
Bu sınıf MIME eklentilerini içerir. Şekilden daha güzel anlaşılıyor.
javax.mail.internet.MimeBodyPart
Bu sınıf gönderilecek MIM eklentisi bilgisini içerir. Gömülü resim göndermek için örnek:
javax.mail.Store
Bu sınıf ile bağlantı açılır.
connect
Örnek:
search
Belli bir tercihe göre arama yapabilmeyi sağlar.
javax.mail.search.ReceivedDateTerm
Örnek:
Apache Commons
IMAPClient
IMAP ile SMTP arasındaki farkı bilmiyorum. Ancak Apache Commons ile bir IMAP sınıfı geilyor. Örnek:
SimpleEmail
addTo
E-postanın kime gideceğini belirtir. Örnek:
send
Basit bir e-posta göndermek için SimpleEmail sınıfı kullanılıyor. Örnek:
Sunucunun sorduğu şifreyi göndermek için kullanılır. Örnekte şifre ssl ile gönderiliyor.
setBounceAddress
Çok emin olmamakla beraber gönderilemeyen yani geri dönen e-postaların burada belirtilen adrese iletildiklerini düşünüyorum.Konuyla ilgili bir link burada.
setMsg
Gönderilecek e-postanın içinin belirtir. Örnek:
setSSLOnConnect
Bu metod ile TLS'in farkını bilmiyorum.
setTLS
Bu metod ile SSL'in farkını bilmiyorum.
MultiPartEmail sınıfı
Eklenti içeren e-postalar gönderbilmeyi sağlar. Apache sayfasında güzel bir örnek var.
HtmlEMail sınıfı
embed
Bu metod ile verilen html mesajının içine bir resim konulabiliyor. Örnek:
Daha sonra gömülen nesneye ait id html içinde "cid" olarak kullanılıyor.
send
Html e-posta göndermek için HtmlEmail sınıfı kullanılıyor. Örneği buradan aldım.
Bu sınıf ile resimlere url atamak mümkün. E-posta açılırken html içindeki image'lar url'den indiriliyor.
embed
Örnek:
EmailAttachment sınıfı
HtmlEmail sınıfına eklenti eklemek için EmailAttachment sınıfı kullanılıyor.Eklenetiler ATTACHMENT veya INLINE olarak gönderilebiliyor.
C#
Konuyu E-Posta Gönderme - C# başlıklı yazıya taşıdım.
SMTP Protokolü
SMTP Protokolü yazısına taşıdım.
E-Posta Adresinin Doğruluğunu Kontrol Etme
Java
En kolay yöntem InternetAddress sınıfını kullanmak. Örnek:
Relay nedir ?
Relay e-posta sunucusunun sadece tanıdığı (authenticate) kişilere ait e-postaları göndermesidir. Şekli buradan aldım.
Bu ilk e-posta standardında, bir mesaj header ve body olarak ikiye ayrılmıştır. Header'ın şekli belirlenmiş ancak Body'nin şekli belirsiz bırakılmış. Sadece 7 bit ASCII olmasına karar verilmiş.
Ancak daha sonra RFC822'ye eklentiler yapılmış ve MIME ile body kısmının şekli belirlenmiş.
Yani MIME içeriğin şeklini tanımlar.
multipart/mixed nedir
Farklı tiplerde nesnelerin - mesela text + eklenti - gönderildiği anlamına gelir.
multipart/alternative nedir
Aynı bilginin farklı gösterim şeklidir. Örneğin text olarak gönderilen metnin alternatifi html de olabilir. Bu durumda şöyle bir blok içinde göndeririz.
Java Mail Alma
- mixed
- alternative
- text
- related
- html
- inline image
- inline image
- attachment
- attachment
Session
Örnek:
Properties props = new Properties();
props.setProperty("mail.store.protocol", "imaps");
Session session = Session.getInstance(props, null);
Store store = session.getStore();
store.connect("smtp.gmail.com", "myuser", "mypassword");
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
int messageCount = inbox.getMessageCount();
List<Message> messages = getMessages(inbox, messageCount);
inbox.close(true);
Java Mail GöndermeSession
Message veya ondan türeyen MimeMessage sınıfı constructor metodu içine Session nesnesi alırlar. Bu nesne bağlantı bilgilerini içerir.
getDefaultInstance
Default doldurulmuş bir session nesnesi döner. Örnek:
import java.util.Properties;
import javax.mail.Session;
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
Session session = Session.getDefaultInstance(props, null);
getInstance
Session açma örneği:
Properties props = new Properties();
props.put("mail.smtp.auth", true);
props.put("mail.smtp.starttls.enable", true);
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
Message message = new MimeMessage(session);
InternetAddress
Bu sınıf alıcının adresi temsil ediliyor.
validate
Verilen adresin doğru olup olmadığı kontrol edilir. Örnek:
javax.mail.internet.MimeMessage
Bu sınıf bir e-mail'in kimden geldiği, kime gittiği gibi bilgileri içerir. Content olarak sadece metin içerebilir. Bu durumda RFC822'nin ilk halini gerçekleştirimiş olur. Veya content olarak MimeMultipart sınıfını da kullanabilir. MimeMultipart sınıfı ise MimeBodyPart sınıflarını içeren bir yapı.
Aşağıda html e-posta gönderme örneği var. Örneği buradan aldım.
MimeMessage msg = new MimeMessage(session);javax.mail.Multipart
//Set from
InternetAddress addressFrom = new InternetAddress("myuser@gmail.com");
msg.setFrom(addressFrom);
//Set to
InternetAddress[] addressTo = new InternetAddress[sendTo.length];
for (int i = 0; i < sendTo.length; i++) {
addressTo[i] = new InternetAddress(sendTo[i]);
}
msg.setRecipients(Message.RecipientType.TO, addressTo);
//Set subject
msg.setSubject(emailSubjectTxt);
MimeMultipart multipart = new MimeMultipart("related");
//first part (the html)
BodyPart messageBodyPart = new MimeBodyPart();
String htmlText = "<H1>Hello</H1><img src=\"cid:image\">";
messageBodyPart.setContent(htmlText, "text/html");
// add it
multipart.addBodyPart(messageBodyPart);
// put everything together
msg.setContent(multipart);
Transport.send(msg);
Eklenti parçalarını içeren kısım. Aşağıdaki şekilde görülebilir.
getCount ve getBodyPart
Bu metodlar ile parçalar alınabilir. Her parçanın BodyPart sınıfından türemek zorundadır.
javax.mail.internet.MimeMultiPart
Bu sınıf MIME eklentilerini içerir. Şekilden daha güzel anlaşılıyor.
javax.mail.internet.MimeBodyPart
Bu sınıf gönderilecek MIM eklentisi bilgisini içerir. Gömülü resim göndermek için örnek:
InternetHeaders headers = new InternetHeaders();Bir başka örnek:
headers.addHeader("Content-Type", "image/jpeg");
headers.addHeader("Content-Transfer-Encoding", "base64");
MimeBodyPart messageBodyPart = new MimeBodyPart(headers, base64EncodedImageContentByteArray);
messageBodyPart.setDisposition(Part.INLINE);
messageBodyPart.setContentID("<image>");
messageBodyPart.setFileName("image.jpg");
messageBodyPart.setContent(content, "text/html");
messageBodyPart.setDisposition(Part.INLINE);
veya
messageBodyPart.setContent(content, "text/plain");
messageBodyPart.setDisposition(Part.INLINE);
javax.mail.Store
Bu sınıf ile bağlantı açılır.
connect
Örnek:
Store store = session.getStore("imaps");javax.mail.Folder
store.connect("imap.gmail.com", "mail", "pass");
search
Belli bir tercihe göre arama yapabilmeyi sağlar.
javax.mail.search.ReceivedDateTerm
Örnek:
Apache Commons
IMAPClient
IMAP ile SMTP arasındaki farkı bilmiyorum. Ancak Apache Commons ile bir IMAP sınıfı geilyor. Örnek:
SimpleEmail
addTo
E-postanın kime gideceğini belirtir. Örnek:
send
Basit bir e-posta göndermek için SimpleEmail sınıfı kullanılıyor. Örnek:
SimpleEmail mail = new SimpleEmail();setAuthenticator
//Sınıfı doldur
//..
//Gönder
email.send();
Sunucunun sorduğu şifreyi göndermek için kullanılır. Örnekte şifre ssl ile gönderiliyor.
Çok emin olmamakla beraber gönderilemeyen yani geri dönen e-postaların burada belirtilen adrese iletildiklerini düşünüyorum.Konuyla ilgili bir link burada.
setMsg
Gönderilecek e-postanın içinin belirtir. Örnek:
setSSLOnConnect
Bu metod ile TLS'in farkını bilmiyorum.
setTLS
Bu metod ile SSL'in farkını bilmiyorum.
MultiPartEmail sınıfı
Eklenti içeren e-postalar gönderbilmeyi sağlar. Apache sayfasında güzel bir örnek var.
HtmlEMail sınıfı
embed
Bu metod ile verilen html mesajının içine bir resim konulabiliyor. Örnek:
Daha sonra gömülen nesneye ait id html içinde "cid" olarak kullanılıyor.
send
Html e-posta göndermek için HtmlEmail sınıfı kullanılıyor. Örneği buradan aldım.
MultiPartEmail email = new HtmlEmail();ImageHtmlEmail sınıfı
//Sınıfı doldur
//..
//Gönder
email.send();
Bu sınıf ile resimlere url atamak mümkün. E-posta açılırken html içindeki image'lar url'den indiriliyor.
embed
Örnek:
EmailAttachment sınıfı
HtmlEmail sınıfına eklenti eklemek için EmailAttachment sınıfı kullanılıyor.Eklenetiler ATTACHMENT veya INLINE olarak gönderilebiliyor.
// eklenti ekle
EmailAttachment attachment = new EmailAttachment();
attachment.setPath("path/my.pdf");
attachment.setDisposition(EmailAttachment.ATTACHMENT);
email.attach(attachment);
C#
Konuyu E-Posta Gönderme - C# başlıklı yazıya taşıdım.
SMTP Protokolü
SMTP Protokolü yazısına taşıdım.
E-Posta Adresinin Doğruluğunu Kontrol Etme
Java
En kolay yöntem InternetAddress sınıfını kullanmak. Örnek:
Relay nedir ?
Relay e-posta sunucusunun sadece tanıdığı (authenticate) kişilere ait e-postaları göndermesidir. Şekli buradan aldım.
Hiç yorum yok:
Yorum Gönder