JavaMail API - Çekirdek Sınıflar
JavaMail API, e-posta mesajlarını göndermek, okumak ve silmek için kullanılan bazı arayüzlerden ve sınıflardan oluşur. JavaMail API'sinde birçok paket olmasına rağmen, Java Mail API'de sıklıkla kullanılan iki ana paketi kapsayacaktır: javax.mail ve javax.mail.internet paketi. Bu paketler, tüm JavaMail çekirdek sınıflarını içerir. Onlar:
Sınıf | Açıklama |
---|---|
javax.mail.Session | API'nin temel sınıfı. Çok iş parçacıklı bir nesne bağlantı fabrikasını temsil eder. |
javax.mail.Message | Bir e-posta mesajını modelleyen soyut bir sınıf. Alt sınıflar gerçek uygulamaları sağlar. |
javax.mail.Address | Bir mesajdaki adresleri (gelen ve adreslere) modelleyen soyut bir sınıf. Alt sınıflar belirli uygulamaları sağlar. |
javax.mail.Authenticator | Posta sunucusundaki posta kaynaklarını korumak için kullanılan soyut bir sınıf. |
javax.mail.Transport | E-posta mesajı göndermek için bir mesaj taşıma mekanizmasını modelleyen soyut bir sınıf. |
javax.mail.Store | Mesajları depolamak ve almak için bir mesaj deposunu ve erişim protokolünü modelleyen soyut bir sınıf. Bir Mağaza, Klasörlere bölünmüştür. |
javax.mail.Folder | Posta mesajları klasörünü temsil eden soyut bir sınıf. Alt klasörler içerebilir. |
javax.mail.internet.MimeMessage | Mesaj soyut bir sınıftır, dolayısıyla bir alt sınıfla çalışmalıdır; çoğu durumda, bir MimeMessage kullanacaksınız. MimeMessage, MIME türlerini ve başlıklarını anlayan bir e-posta mesajıdır. |
javax.mail.internet.InternetAddress | Bu sınıf, RFC822 sözdizimini kullanan bir İnternet e-posta adresini temsil eder. Tipik adres sözdizimi, kullanıcı@host.domain veya Kişisel Ad <kullanıcı@host.domain> biçimindedir . |
Bu sınıfların her birini ayrıntılı olarak inceleyelim ve sonraki bölümlerde bunların her birini kullanarak örnekleri inceleyeceğiz.
Oturum Sınıfı
Oturum sınıfı JavaMail API birincil sınıftır ve subclassed edilmez. Oturum nesne yapılandırması ayarını ve kimlik doğrulama hem kolları JavaMail API, bağlantı fabrika gibi davranır.
Oturum nesnesi aşağıdaki şekillerde oluşturulabilir:
JNDI hizmetinde depolanan yönetilen nesneyi arayarak
InitialContext ctx = new InitialContext(); Session session = (Session) ctx.lookup("usersMailSession");
usersMailSession , Session nesnesi için yönetilen nesne olarak kullanılan JNDI isim nesnesidir. usersMailSession , posta sunucusu ana bilgisayar adı, postayı gönderen kullanıcı hesabı ve Session nesnesi tarafından desteklenen protokoller gibi bilgiler dahil olmak üzere ad / değer çiftleri gibi gerekli parametrelerle oluşturulabilir ve yapılandırılabilir.
Session nesnesini oluşturmanın başka bir yöntemi , posta sunucusu adı, kullanıcı adı, parola ve olabilecek diğer bilgiler gibi bazı varsayılan bilgileri geçersiz kılmak için bir java.util.Properties nesnesini kullanabileceğiniz programlı yaklaşıma dayanmaktadır. uygulamanızın tamamında paylaşılır.
İçin yapıcısı Oturum sınıfında olan özel . Bu nedenle Session sınıfı, Session nesnesini alan iki yöntem (aşağıda listelenmiştir) sağlar .
getDefaultInstance(): GetDefaultInstance () yöntemini kullanarak oturum nesnesini almanın iki yöntemi vardır. Varsayılan oturumu döndürür.
public static Session getDefaultInstance(Properties props) public static Session getDefaultInstance(Properties props,Authenticator auth)
getInstance(): GetInstance () yöntemini kullanarak oturum nesnesini almanın iki yöntemi vardır. Yeni oturumu döndürür.
public static Session getInstance(Properties props) public static Session getInstance(Properties props,Authenticator auth)
Mesaj Sınıfı
Oluşturulan Session nesnesi ile şimdi gönderilecek bir mesaj oluşturmaya geçiyoruz. Mesaj türü javax.mail.Message olacaktır .
Mesaj soyut bir sınıftır. Bu nedenle alt sınıfı javax.mail.internet.MimeMessage sınıfı çoğunlukla kullanılır.
Mesajı oluşturmak için, MimeMessage sınıf yapıcısında oturum nesnesini iletmeniz gerekir. Örneğin:
MimeMessage message=new MimeMessage(session);
Mesaj nesnesi oluşturulduktan sonra, içinde bilgi depolamamız gerekir. Mesaj sınıfı, javax.mail.internet iken javax.mail.Part arayüzünü uygular. MimeMessage, javax.mail.internet.MimePart'ı uygular. İçeriği depolamak için message.setContent () veya mimeMessage.setText () kullanabilirsiniz.
MimeMessage sınıfının yaygın olarak kullanılan yöntemleri şunlardır:
Yöntem Açıklama public void setFrom (Adres adresi) başlık alanını ayarlamak için kullanılır. public void addRecipients (Message.RecipientType türü, Dize adresleri) verilen adresi alıcı türüne eklemek için kullanılır. public void setSubject (Dize konusu) konu başlığı alanını ayarlamak için kullanılır. public void setText (Dize metin mesajı) metin / düz MIME türü kullanarak metni mesaj içeriği olarak ayarlamak için kullanılır.
Adres Sınıfı
Artık bir Oturum ve Mesaj (içeriğin saklandığı) nesnelerimiz olduğuna göre, mektubu Adres nesnesini kullanarak ele almamız gerekiyor .
Adres soyut bir sınıftır. Bu nedenle alt sınıfı javax.mail.internet.InternetAddress sınıfı çoğunlukla kullanılır.
Adres , yalnızca e-posta adresini ileterek oluşturulabilir:
Address address = new InternetAddress("[email protected]");
Adres oluşturmanın başka bir yolu da adı e-posta adresiyle birlikte iletmektir:
Address address = new InternetAddress("[email protected]", Manisha);
Kime, Kimden, CC, BCC alanlarını aşağıdaki gibi de ayarlayabilirsiniz.
message.setFrom(address)
message.addRecipient (tür, adres)
Önceden tanımlanmış üç adres türü, aşağıdaki değerlerden birine sahip nesnelerdir:
Message.RecipientType.TO
Message.RecipientType.CC
Message.RecipientType.BCC
Authenticator Sınıfı
Kimlik Doğrulayıcı sınıfı, bir ağ bağlantısı için kimlik doğrulamanın nasıl elde edileceğini bilen bir nesneyi temsil eder. Genellikle bunu, kullanıcıdan bilgi isteyerek yapar.
Authenticator soyut bir sınıftır. Bir alt sınıf PasswordAuthentication oluşturarak yapıcısına bir kullanıcı adı ve şifre aktarırsınız.
Oturum nesnesi oluşturduğunuzda, Authenticator'ı Oturuma kaydettirmelisiniz.
Aşağıda Authenticator kullanımına bir örnek verilmiştir :
Properties props = new Properties();
//Override props with any customized data
PasswordAuthentication auth = new PasswordAuthentication("manisha", "pswrd")
Session session = Session.getDefaultInstance(props, auth);
Taşıma Sınıfı
Taşıma sınıfı, mesaj taşıma mekanizması olarak kullanılır. Bu sınıf normalde bir mesaj göndermek için SMTP protokolünü kullanır.
Soyut bir sınıftır.
Yalnızca statik send () yöntemini çağırarak sınıfın varsayılan sürümünü kullanabilirsiniz :
Transport.send(message);
Mesaj göndermenin diğer yolu, protokolünüz için oturumdan belirli bir örnek almak, kullanıcı adı ve parolayı iletmek (gereksiz ise boştur), mesajı göndermek ve bağlantıyı kapatmaktır:
message.saveChanges(); // implicit with send() //Get transport for session Transport transport = session.getTransport("smtp"); //Connect transport.connect(host, username, password); //repeat if necessary transport.sendMessage(message, message.getAllRecipients()); //Done, close the connection transport.close();
Mağaza Sınıfı
Mesajları depolamak ve almak için bir mesaj deposunu ve erişim protokolünü modelleyen soyut bir sınıf. Alt sınıflar gerçek uygulamaları sağlar. Mağaza , mağazaları adlandırmak, mağazalara bağlanmak ve bağlantı olaylarını dinlemek için birçok yaygın yöntem sağlayan Service sınıfını genişletir .
İstemciler, veritabanı erişim protokolünü uygulayan bir Mağaza nesnesi alarak bir İleti Deposuna erişim elde eder. Çoğu ileti deposu, erişime izin vermeden önce kullanıcının kimliğinin doğrulanmasını gerektirir. Connect yöntemi bu kimlik doğrulamasını gerçekleştirir.
Store store = session.getStore("pop3");
store.connect(host, username, password);
Klasör Sınıfı
Klasör , posta mesajları için bir klasörü temsil eden soyut bir sınıftır. Alt sınıflar protokole özgü Klasörler uygular. Klasörler mesajların yanı sıra alt klasörler de içerebilir, böylece hiyerarşik bir yapı sağlar.
Mağazaya bağlandıktan sonra, içindeki mesajları okuyabilmeniz için önce açılması gereken bir Klasör alabilirsiniz.
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message message[] = folder.getMessages();
GetFolder (String name) bir klasör nesnesi için yöntem adlandırılmış alt klasörü döndürür. Postayı okuduktan sonra hem Mağaza hem de Klasör bağlantısını kapatın.
Mağaza ve Klasör ilişkisini aşağıdaki görselle görebiliriz:
Gördüğümüz gibi, her bir kullanıcı hesabı için, sunucu, kullanıcının mesajlarının depolanması olan bir depoya sahiptir. Mağaza klasörlere bölünmüştür ve "gelen kutusu" klasörü, e-posta mesajlarını içeren birincil klasördür. Bir klasör hem mesajları hem de alt klasörleri içerebilir.