Giter Site home page Giter Site logo

aspirin's People

Contributors

fnk avatar lsolova avatar m-szalik avatar masukomi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aspirin's Issues

Multiple To addresses causes slow sending

Hi.

I have a strange problem, if I create 2x messages with different to to addresses and send them with Aspirin they are sent very quickly.

If I create 1 email with 2 people in the to list it always takes longer to send.

It appears the QueManager goes into a 1 minute sleep.
See the log message "There is no sendable item in the queue. Fallback to waiting state for a minute."

If I add more addresses it takes longer and longer.

Below is the log output. There is no failed connection to the server, which I have seen with some email servers refusing connections if we send too many emails too fast.

14:10:00,467 DEBUG Aspirin:77 - MailQue.service(): Remotely delivering mail javax.mail.internet.MimeMessage@1818f80
14:10:00,471  INFO Aspirin:136 - QueManager.run(): QueManager started.
14:10:00,472 TRACE Aspirin:289 - QuedItem (javax.mail.internet.MimeMessage@1818f80).isCompleted(): S0+F0/A2
14:10:00,472 TRACE Aspirin:179 - MailQue.getNextSendable(): Maintenance of MailQue - removed 0 items from 1
14:10:00,472 TRACE Aspirin:187 - MailQue.getNextSendable(): Found item to send. qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=0; ]; 
14:10:00,472 DEBUG Aspirin:150 - QueManager.run(): Start delivery. qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=1; ]; 
14:10:00,479 TRACE Aspirin:49 - GenericPoolableRemoteDeliveryFactory.makeObject(): New RemoteDelivery object created: RemoteDelivery-1
14:10:00,480 TRACE Aspirin:155 - QueManager.run(): Borrow RemoteDelivery object. rd=RemoteDelivery-1
14:10:00,480 TRACE Aspirin:156 - QueManager.run(): Pool state. A1/I0
14:10:00,481 TRACE Aspirin:677 - RemoteDelivery (RemoteDelivery-1).setQuedItem(): Item was set. qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=1; ]; 
14:10:00,481 TRACE Aspirin:289 - QuedItem (javax.mail.internet.MimeMessage@1818f80).isCompleted(): S0+F0/A2
14:10:00,481 TRACE Aspirin:179 - MailQue.getNextSendable(): Maintenance of MailQue - removed 0 items from 1
14:10:00,481 TRACE Aspirin:178 - QueManager.run(): There is no sendable item in the queue. Fallback to waiting state for a minute.
14:10:00,481 TRACE Aspirin:585 - RemoteDelivery (RemoteDelivery-1).run(): Call delivering... qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=1; ]; 
14:10:00,482 DEBUG Aspirin:170 - RemoteDelivery (RemoteDelivery-1).deliver(): Starting mail delivery. qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=1; ]; 
14:10:00,586 TRACE Aspirin:231 - RemoteDelivery (RemoteDelivery-1).deliver(): 1 servers found for ptc.com.
14:10:00,586 DEBUG Aspirin:252 - RemoteDelivery (RemoteDelivery-1).deliver(): Attempting delivery of javax.mail.internet.MimeMessage@1818f80 to host smtp://int-mail.ptc.com to addresses [[email protected]]
14:10:01,277 DEBUG Aspirin:309 - RemoteDelivery (RemoteDelivery-1).deliver(): Mail (javax.mail.internet.MimeMessage@1818f80) sent successfully to smtp://int-mail.ptc.com
14:10:01,278 TRACE Aspirin:289 - QuedItem (javax.mail.internet.MimeMessage@1818f80).isCompleted(): S1+F0/A2
14:10:01,278 TRACE Aspirin:289 - QuedItem (javax.mail.internet.MimeMessage@1818f80).isCompleted(): S1+F0/A2
14:10:01,278 TRACE Aspirin:206 - QuedItem.release(): Item released. qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=0; ]; 
14:10:01,278 TRACE Aspirin:602 - RemoteDelivery (RemoteDelivery-1).run(): Release item. qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=0; ]; 
14:10:01,278  INFO Aspirin:611 - RemoteDelivery (RemoteDelivery-1).run(): Try to give back RemoteDelivery object into the pool.
14:10:01,279 TRACE Aspirin:623 - RemoteDelivery (RemoteDelivery-1).run(): Wait for next sendable item.
14:11:00,484 TRACE Aspirin:289 - QuedItem (javax.mail.internet.MimeMessage@1818f80).isCompleted(): S1+F0/A2
14:11:00,484 TRACE Aspirin:179 - MailQue.getNextSendable(): Maintenance of MailQue - removed 0 items from 1
14:11:00,484 TRACE Aspirin:187 - MailQue.getNextSendable(): Found item to send. qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=0; ]; 
14:11:00,484 DEBUG Aspirin:150 - QueManager.run(): Start delivery. qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=1; ]; 
14:11:00,484 TRACE Aspirin:155 - QueManager.run(): Borrow RemoteDelivery object. rd=RemoteDelivery-1
14:11:00,485 TRACE Aspirin:156 - QueManager.run(): Pool state. A1/I0
14:11:00,485 TRACE Aspirin:677 - RemoteDelivery (RemoteDelivery-1).setQuedItem(): Item was set. qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=1; ]; 
14:11:00,485 TRACE Aspirin:585 - RemoteDelivery (RemoteDelivery-1).run(): Call delivering... qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=1; ]; 
14:11:00,485 TRACE Aspirin:289 - QuedItem (javax.mail.internet.MimeMessage@1818f80).isCompleted(): S1+F0/A2
14:11:00,485 DEBUG Aspirin:170 - RemoteDelivery (RemoteDelivery-1).deliver(): Starting mail delivery. qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=1; ]; 
14:11:00,485 TRACE Aspirin:179 - MailQue.getNextSendable(): Maintenance of MailQue - removed 0 items from 1
14:11:00,488 TRACE Aspirin:178 - QueManager.run(): There is no sendable item in the queue. Fallback to waiting state for a minute.
14:11:00,488 TRACE Aspirin:231 - RemoteDelivery (RemoteDelivery-1).deliver(): 1 servers found for ptc.com.
14:11:00,488 DEBUG Aspirin:252 - RemoteDelivery (RemoteDelivery-1).deliver(): Attempting delivery of javax.mail.internet.MimeMessage@1818f80 to host smtp://int-mail.ptc.com to addresses [[email protected]]
14:11:01,183 DEBUG Aspirin:309 - RemoteDelivery (RemoteDelivery-1).deliver(): Mail (javax.mail.internet.MimeMessage@1818f80) sent successfully to smtp://int-mail.ptc.com
14:11:01,183 TRACE Aspirin:289 - QuedItem (javax.mail.internet.MimeMessage@1818f80).isCompleted(): S2+F0/A2
14:11:01,183 TRACE Aspirin:289 - QuedItem (javax.mail.internet.MimeMessage@1818f80).isCompleted(): S2+F0/A2
14:11:01,184 TRACE Aspirin:206 - QuedItem.release(): Item released. qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=3; ]; 
14:11:01,184 TRACE Aspirin:602 - RemoteDelivery (RemoteDelivery-1).run(): Release item. qi=QuedItem [id=javax.mail.internet.MimeMessage@1818f80; status=3; ]; 
14:11:01,184  INFO Aspirin:611 - RemoteDelivery (RemoteDelivery-1).run(): Try to give back RemoteDelivery object into the pool.
14:11:01,184 TRACE Aspirin:623 - RemoteDelivery (RemoteDelivery-1).run(): Wait for next sendable item.

JDK8 and Javadoc

Since JDK8 Javadocs has become very strict:

  • <br/> should be replaced with <br>
  • tables must have summary attribute.
  • all links must be valid

Otherwise Javadocs generation fails.

Unit test

I try to run all test and doesn't understand one thing.

MailQueTest test failed on last assertion:
assertTrue(que.getQueueSize() == 0);

Mail was successfully send, received and checked on server, but queue is not empty.

In log is this:
17:59:57.585 [Aspirin-QueManager-9] INFO MailService - QueManager.run(): QueManager started.
17:59:57.586 [Aspirin-QueManager-9] DEBUG MailService - QueManager.run(): Start delivery. qi=QuedItem [id=javax.mail.internet.MimeMessage@132e13d; status=1; ];
17:59:57.594 [RemoteDelivery-1] DEBUG MailService - RemoteDelivery (RemoteDelivery-1).deliver(): Starting mail delivery. qi=QuedItem [id=javax.mail.internet.MimeMessage@132e13d; status=1; ];
18:00:02.716 [RemoteDelivery-1] DEBUG MailService - RemoteDelivery (RemoteDelivery-1).deliver(): Attempting delivery of javax.mail.internet.MimeMessage@132e13d to host smtp://aspmx.l.google.com to addresses [[email protected]]
18:00:06.442 [RemoteDelivery-1] DEBUG MailService - RemoteDelivery (RemoteDelivery-1).deliver(): Mail (javax.mail.internet.MimeMessage@132e13d) sent successfully to smtp://aspmx.l.google.com
18:00:06.443 [RemoteDelivery-1] INFO MailService - RemoteDelivery (RemoteDelivery-1).run(): Try to give back RemoteDelivery object into the pool.

Why try to give back RemoteDelivery object into the pool when was successfully sended?

Can someone please update the README?

This project hasn't been touched in 4 years so I guess I'm not holding my breath but the interface was completely changed a while back and the README is not even close to accurate as to how you use this library. I love the concept and really have use for this lib but it's quite unclear how you actually wield it from the documentation.. scanning code-as-docs as we speak.
Thanks.

No route to host

I'm trying to test just basic features:

import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.masukomi.aspirin.Aspirin;
import org.masukomi.aspirin.core.AspirinInternal;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.Message;
public class TestAspirin {
public static void main(String[] args) throws Exception
{

    Logger rootLogger = Logger.getRootLogger();
    rootLogger.setLevel(Level.TRACE);
    rootLogger.addAppender(new ConsoleAppender(
            new PatternLayout("%-6r [%p] %c - %m%n")));

    System.out.println("starting");
    MimeMessage message = AspirinInternal.createNewMimeMessage();

    message.setFrom(new InternetAddress("[email protected]"));
    //message.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
    message.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
    message.setSubject("Aspirin - test to show it doesn't shut down");
    message.setText("This is the text");
    Aspirin.add(message);
    System.out.println("queing mail");

}

}

So, almost all is like in the unit ttest description. When I'm running it, I'm getting

014-01-19 13:51:55,531 INFO [Thread-1] Aspirin Maintenance thread started.
0 [INFO] Aspirin - Maintenance thread started.
queing mail
shutting down
2014-01-19 13:51:55,636 INFO [Aspirin-DeliveryManager-9] Aspirin DeliveryManager started.
105 [INFO] Aspirin - DeliveryManager started.
2014-01-19 13:51:55,647 TRACE [Aspirin-DeliveryManager-9] Aspirin DeliveryManager.run(): Pool state. A0/I0
116 [TRACE] Aspirin - DeliveryManager.run(): Pool state. A0/I0
2014-01-19 13:51:55,647 DEBUG [Aspirin-DeliveryManager-9] Aspirin DeliveryManager.run(): Start delivery. qi=Mail: [id=1390125115.0; recipient=[email protected]];
116 [DEBUG] Aspirin - DeliveryManager.run(): Start delivery. qi=Mail: [id=1390125115.0; recipient=[email protected]];
2014-01-19 13:51:55,651 TRACE [Aspirin-DeliveryManager-9] Aspirin GenericPoolableDeliveryThreadFactory.makeObject(): New DeliveryThread object created: DeliveryThread-1.
120 [TRACE] Aspirin - GenericPoolableDeliveryThreadFactory.makeObject(): New DeliveryThread object created: DeliveryThread-1.
2014-01-19 13:51:55,655 TRACE [Aspirin-DeliveryManager-9] Aspirin DeliveryManager.run(): Borrow DeliveryThread object. dt=DeliveryThread-1: state 'NEW/false'
124 [TRACE] Aspirin - DeliveryManager.run(): Borrow DeliveryThread object. dt=DeliveryThread-1: state 'NEW/false'
2014-01-19 13:51:55,655 TRACE [Aspirin-DeliveryManager-9] Aspirin DeliveryThread (DeliveryThread-1).setQuedItem(): Item was set. qi=DeliveryContext [qi=Mail: [id=1390125115.0; recipient=[email protected]];];
124 [TRACE] Aspirin - DeliveryThread (DeliveryThread-1).setQuedItem(): Item was set. qi=DeliveryContext [qi=Mail: [id=1390125115.0; recipient=[email protected]];];
2014-01-19 13:51:55,656 TRACE [Aspirin-DeliveryManager-9] Aspirin DeliveryManager.run(): There is no sendable item in the queue. Fallback to waiting state for a minute.
125 [TRACE] Aspirin - DeliveryManager.run(): There is no sendable item in the queue. Fallback to waiting state for a minute.
2014-01-19 13:51:55,656 TRACE [DeliveryThread-1] Aspirin DeliveryThread (DeliveryThread-1).run(): Call delivering... dCtx=DeliveryContext [qi=Mail: [id=1390125115.0; recipient=[email protected]];];
125 [TRACE] Aspirin - DeliveryThread (DeliveryThread-1).run(): Call delivering... dCtx=DeliveryContext [qi=Mail: [id=1390125115.0; recipient=[email protected]];];
2014-01-19 13:51:55,671 INFO [DeliveryThread-1] Aspirin DeliveryThread (DeliveryThread-1).deliver(): Starting mail delivery. qi=DeliveryContext [qi=Mail: [id=1390125115.0; recipient=[email protected]];];
140 [INFO] Aspirin - DeliveryThread (DeliveryThread-1).deliver(): Starting mail delivery. qi=DeliveryContext [qi=Mail: [id=1390125115.0; recipient=[email protected]];];
2014-01-19 13:51:56,155 TRACE [DeliveryThread-1] Aspirin ResolveHost.handle(): 1 servers found for 'mail.ru'.
624 [TRACE] Aspirin - ResolveHost.handle(): 1 servers found for 'mail.ru'.
2014-01-19 13:51:56,177 DEBUG [DeliveryThread-1] Aspirin SendMessage.handle(): Attempting delivery of '1390125115.0' to recipient '[email protected]' on host 'smtp://mxs.mail.ru'
646 [DEBUG] Aspirin - SendMessage.handle(): Attempting delivery of '1390125115.0' to recipient '[email protected]' on host 'smtp://mxs.mail.ru'
2014-01-19 13:51:56,306 INFO [DeliveryThread-1] Aspirin DeliveryThread (DeliveryThread-1).deliver(): Mail delivery failed: Нет маршрута до узла. qi=DeliveryContext [qi=Mail: [id=1390125115.0; recipient=[email protected]];];
775 [INFO] Aspirin - DeliveryThread (DeliveryThread-1).deliver(): Mail delivery failed: Нет маршрута до узла. qi=DeliveryContext [qi=Mail: [id=1390125115.0; recipient=[email protected]];];
2014-01-19 13:51:56,307 TRACE [DeliveryThread-1] Aspirin DeliveryManager.release(): Release item '1390125115.0' with state: 'QUEUED' after 1 attempts.

Mail delivery failed reason is localized "No route to host".

That's is rather strange since when i do "traceroute mxs.mail.ru", I see the route. So what would be the reason why the Transport can't reach the host?

Mail being sent multiple times + nullPointerException

Hello there!

I just started using Aspirin and I've pretty much fallen in love with its ease of use. However, two issues pop up each time I send a message with it.

First, it seems to send each message twice for no apparent reason. I am unsure how to find out why as I get no confirmation of the delivery of the second message.

Second, each time I run Aspirin I get the following exception printed to sysOut several times:
Exception in thread "Aspirin-QueManager-25" java.lang.NullPointerException
at org.masukomi.aspirin.core.QueManager.run(QueManager.java:198)

My implementation code is as follows:
public static void sendMail(MimeMessage message)
{
MailQue mq = new MailQue();
try
{
mq.queMail(message);
mq.addWatcher(new MailUtil());
} catch (MessagingException e)
{
e.printStackTrace();
}
mq.terminate();
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.