_ 3.2.1 Epost-sändning Denna uppgift belyser hur man implementerar sändning av epost. __ Uppgift Gör ett program som kan sända epost där användaren ska kunna specifiera följande meddelandespecifika uppgifter: - Till - Ämne - Meddelande Eftersom de flesta epostservrar (som programmet kopplar sig till) numera även kräver: - Autentisering: inloggning med användarnamn och lösenord - Säker överföring: krypterad information över port §465§ (SSL) eller §587§ (TLS) så kan man antigen låta användaren ange även följande epostserverspecifika uppgifter: - Epostserver - Portnummer - Användarnamn - Lösenord Detta behövs dock bara om man kopplar sig till en epostserver som kräver det. __ Exempel Ett enkelt exempel utan GUI kan köras enligt följande: - Hämta filen: - §[mailSenderTerminal.jar, 05_ass/ip1/3/3.2.1/MailSenderTerminal/mailSenderTerminal.jar]§ - Kör programmet med: §java -jar mailSenderTerminal.jar <ärende> § Ett enkelt exempel med GUI kan köras enligt följande: - Hämta filen: - §[mailSender.jar, 05_ass/ip1/3/3.2.1/MailSender/mailSender.jar]§ - Kör programmet med: java -jar mailSender.jar __ Tips Man kan använda Googles epostserver som kräver autentisering och kryptering: - Host: §smtp.gmail.com§ - Port: §465§ eller §587§ - Användarnamn: §§ - Lösenord: §§ Det speciella gmail-lösenordet är inte det vanliga gmail-lösenordet utan ett man får ett extra lösenord av Google för att använda i osäkra appar. Se vidare [Google: Sign in with app passwords, https://support.google.com/accounts/answer/185833?visit_id=638687467349409867-3639313399&p=InvalidSecondFactor&rd=1] Se [Mkyong: JavaMail API Sending email via Gmail SMTP example, https://mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/]. Om man är inne på DSV:s nätverk så kan man använda Stockholms universitets epostserver som varken kräver autentisering eller kryptering: § Host: smtp.su.se Port: 25 § Notera att alla anrop loggas så missbruka inte denna epostserver. Använd till exempel JDK-extensionen Javamail: - [Github: JavaMail, https://javaee.github.io/javamail/#Download_JavaMail_Release] Eftersom vi använder ett tillbehör till Java så behöver man följande extra jar-fil(er): - §[javax.mail.jar, 05_ass/ip1/3/3.2.1/MailSenderTerminal/javax.mail.jar]§ - §[activation.jar, 05_ass/ip1/3/3.2.1/MailSenderTerminal/activation.jar]§ Om man inte vill sätta §classpath§ till denna/dessa så kan den/de packas upp med: § jar xf javax.mail.jar jar xf activation.jar § När man sedan utvecklat klart sitt program och vill packa ihop det med alla tillbehör till en jar-fil så gör man exempelvis: § jar cmf mainClassSender.txt mailSender.jar com javax *.class META-INF § Här är §mainClassSender.txt§ manifestfilen innehållande: § Main-Class: MailSender § Se vidare [jGuru: Fundamentals of the JavaMail API, http://www.coderanch.com/how-to/content/Fundamentals-of-the-JavaMail-API.html]. Ibland fastnar programmet på raden: § transport.send(meddelande); § Man kan lägga till följande kod för att undvika detta: § properties.put("mail.smtp.timeout", "5000"); properties.put("mail.smtp.connectiontimeout", "5000"); § __ Hjälp ~ 05_ass/help/01.txt > [Klicka här för hjälp, helper.dsv@gmail.com, Prog Internet: 3.2.1 Epost-sändning: http://people.dsv.su.se/~pierre/i/i.cgi?href=05_ass/ip1/3.2.1.txt] ½===system_tutoring_message===½ < ~ 05_ass/help/02.txt