简体   繁体   English

SubethaSmtp 示例

[英]SubethaSmtp example

Can you please tell me how to use SubethaSmtp library?你能告诉我如何使用SubethaSmtp库吗?

<dependency>
<groupId>org.subethamail</groupId>
<artifactId>subethasmtp</artifactId>
<version>3.1.7</version>
<scope>test</scope>
</dependency>

I just want to listen to the emails on a port number from my Gmail/outlook inbox and display them in console window/log them in text file/DB.我只想从我的 Gmail/outlook 收件箱收听端口号上的电子邮件,并在控制台窗口中显示它们/将它们记录在文本文件/数据库中。

I studied most of the API doc but I'm not being able to put the pieces together to get the things working.我研究了大部分 API 文档,但我无法将各个部分组合在一起以使其正常工作。

Can you please tell me about a working example in spring-boot?你能告诉我一个 spring-boot 中的工作示例吗?

Here is my code below so far到目前为止,这是我的代码

package emailbox;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Service;
import org.subethamail.smtp.helper.SimpleMessageListenerAdapter;
import org.subethamail.smtp.server.SMTPServer;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@SuppressWarnings("restriction")
@PropertySource("/emailbox.properties")
@Service
public class SMTPServerService {

    @Value("${smtpserver.enabled}")
    String enabled="";

    @Value("${smtpserver.hostName}")
    String hostName="";

    @Value("${smtpserver.port}")
    String port="";

    SMTPServer smtpServer;

    public SMTPServerService() {
    }

@PostConstruct 
public void start() { 
    if(enabled.equalsIgnoreCase("true"))
{ 
        SimpleMessageListenerImpl l = new SimpleMessageListenerImpl(); 
        smtpServer = new SMTPServer(new SimpleMessageListenerAdapter(l)); 
        smtpServer.setHostName(this.hostName); 
        smtpServer.setPort(Integer.valueOf(port)); 
        smtpServer.start(); 
        System.out.println("****** SMTP Server is running for domain "+smtpServer.getHostName()+" on port "+smtpServer.getPort()); 
        } else { 
        System.out.println("****** SMTP Server NOT ENABLED by settings "); 
        } 
}

@PreDestroy 
public void stop() { 
if(enabled.equalsIgnoreCase("true")){ 
System.out.println("****** Stopping SMTP Server for domain "+smtpServer.getHostName()+" on port "+smtpServer.getPort()); 
smtpServer.stop(); 
} 
}

    public boolean isRunning() {
        return smtpServer.isRunning();
    }
}

package emailbox;

import java.io.InputStream;
import java.util.Properties;

import javax.mail.Session;
import javax.mail.internet.MimeMessage;

 import org.subethamail.smtp.helper.SimpleMessageListener;

 public class SimpleMessageListenerImpl implements SimpleMessageListener {
public SimpleMessageListenerImpl() {
}

@Override
public boolean accept(String from, String recipient) {
    return true;
}

@Override 
public void deliver(String from, String recipient, InputStream data) { 
Session session = Session.getDefaultInstance(new Properties()); 
MimeMessage m = new MimeMessage(session,data); 
ReceivedEmail email=new ReceivedEmail(m); 
// ... here we go with email message ... 
 }
 }

Subetha SMTP is used for building an SMTP Server. Subetha SMTP 用于构建 SMTP 服务器。 You should be using POP or IMAP for this purpose to read emails from your inbox.为此,您应该使用 POP 或 IMAP 来阅读收件箱中的电子邮件。 Please see the example below: You just need java mail api.请看下面的例子:你只需要java mail api。

public void receiveMail(){
            Properties props = System.getProperties();
            props.setProperty("mail.store.protocol", "imap");
            props.put("mail.imap.host", host);
            props.put("mail.imap.port", port);
            props.put("mail.imap.auth.login.disable", "true");
            props.put("mail.imap.auth.plain.disable", "false");
            //props.put("mail.imap.ssl.enable", "true");
            props.put("mail.debug", "true");
            props.put("mail.debug.auth", "true");


            Session session = Session.getInstance(props, new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(user, pwd);
                }
            });

            store = (IMAPStore) session.getStore("imap");



            store.connect(host, user, pwd);
            folder = (IMAPFolder) store.getFolder("INBOX"); 

           openFolder(folder);
  }
   public static void openFolder(IMAPFolder folder) throws MessagingException, IOException{
          String subject = null;
          if (!folder.isOpen())
              folder.open(Folder.READ_WRITE);
          Message[] messages = folder.getMessages();
          System.out.println("No of Messages : " + folder.getMessageCount());
          System.out.println("No of Unread Messages : " + folder.getUnreadMessageCount());
          System.out.println(messages.length);
          if (messages.length > 0) {
              for (int i = 0; i < 1; i++) {

                  System.out.println("*****************************************************************************");
                  System.out.println("MESSAGE " + (i + 1) + ":");
                  Message msg = messages[i];
                  System.out.println("Message Number: " + msg.getMessageNumber());
                  // Object String;
                  System.out.println("UID: " + folder.getUID(msg));

                  subject = msg.getSubject();

                  System.out.println("Subject: " + subject);
                  System.out.println("From: " + msg.getFrom()[0]);
                  System.out.println("To: " + msg.getAllRecipients()[0]);
                  System.out.println("Date: " + msg.getReceivedDate());
                  System.out.println("Size: " + msg.getSize());
                  System.out.println(msg.getFlags());
                  System.out.println("Body: \n" + msg.getContent());
                  System.out.println(msg.getContentType());

              }
          }
    }

A full example of receiving emails with SubEtha SMTP (and maybe if you're using Spring Boot also) is available here 此处提供了使用 SubEtha SMTP 接收电子邮件的完整示例(如果您也使用 Spring Boot,也许)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM