diff options
Diffstat (limited to 'src/net/transport.cpp')
-rw-r--r-- | src/net/transport.cpp | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/net/transport.cpp b/src/net/transport.cpp index 85d227e4..6dcf3101 100644 --- a/src/net/transport.cpp +++ b/src/net/transport.cpp @@ -54,9 +54,10 @@ void transport::send(ref <vmime::message> msg, utility::progressListener* progre try { - const mailboxField& from = dynamic_cast <const mailboxField&> - (*msg->getHeader()->findField(fields::FROM)); - expeditor = from.getValue(); + const mailbox& mbox = *msg->getHeader()->findField(fields::FROM)-> + getValue().dynamicCast <const mailbox>(); + + expeditor = mbox; } catch (exceptions::no_such_field&) { @@ -68,25 +69,28 @@ void transport::send(ref <vmime::message> msg, utility::progressListener* progre try { - const addressListField& to = dynamic_cast <const addressListField&> - (*msg->getHeader()->findField(fields::TO)); - extractMailboxes(recipients, to.getValue()); + const addressList& to = *msg->getHeader()->findField(fields::TO)-> + getValue().dynamicCast <const addressList>(); + + extractMailboxes(recipients, to); } catch (exceptions::no_such_field&) { } try { - const addressListField& cc = dynamic_cast <const addressListField&> - (*msg->getHeader()->findField(fields::CC)); - extractMailboxes(recipients, cc.getValue()); + const addressList& cc = *msg->getHeader()->findField(fields::CC)-> + getValue().dynamicCast <const addressList>(); + + extractMailboxes(recipients, cc); } catch (exceptions::no_such_field&) { } try { - const addressListField& bcc = dynamic_cast <const addressListField&> - (*msg->getHeader()->findField(fields::BCC)); - extractMailboxes(recipients, bcc.getValue()); + const addressList& bcc = *msg->getHeader()->findField(fields::BCC)-> + getValue().dynamicCast <const addressList>(); + + extractMailboxes(recipients, bcc); } catch (exceptions::no_such_field&) { } |