{
const char *Status;
SmtpOutMsg *Msg = IO->Data;
-
+ StrBuf *StatusMessage;
+
+ if (Msg->MyQEntry->AllStatusMessages != NULL)
+ StatusMessage = Msg->MyQEntry->AllStatusMessages;
+ else
+ StatusMessage = Msg->MyQEntry->StatusMessage;
+
+
if (Msg->MyQEntry->Status == 2) {
SetSMTPState(IO, eSTMPfinished);
Status = "Delivery successful.";
Msg->user,
Msg->node,
Msg->name,
- ChrPtr(Msg->MyQEntry->StatusMessage));
+ ChrPtr(StatusMessage));
Msg->IDestructQueItem = DecreaseQReference(Msg->MyQItem);
Msg->MyQItem->QueMsgID = -1;
if (Msg->IDestructQueItem)
- smtpq_do_bounce(Msg->MyQItem, Msg->msgtext, Msg->pCurrRelay);
+ smtpq_do_bounce(Msg->MyQItem, StatusMessage, Msg->msgtext, Msg->pCurrRelay);
if (Msg->nRemain > 0)
{
* instructions for "5" codes (permanent fatal errors) and produce/deliver
* a "bounce" message (delivery status notification).
*/
-void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *OMsgTxt, ParsedURL *Relay)
+void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *StatusMessage, StrBuf *OMsgTxt, ParsedURL *Relay)
{
static int seq = 0;
-
+
struct CtdlMessage *bmsg = NULL;
StrBuf *boundary;
StrBuf *Msg = NULL;
StrBufAppendBufPlain(Msg, HKEY(" "), 0);
StrBufAppendBuf(Msg, ThisItem->Recipient, 0);
StrBufAppendBufPlain(Msg, HKEY(": "), 0);
- StrBufAppendBuf(Msg, ThisItem->StatusMessage, 0);
+ StrBufAppendBuf(Msg, StatusMessage, 0);
StrBufAppendBufPlain(Msg, HKEY("\r\n"), 0);
}
}
void RemoveQItem(OneQueItem *MyQItem);
int CountActiveQueueEntries(OneQueItem *MyQItem, int before);
StrBuf *SerializeQueueItem(OneQueItem *MyQItem);
-void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *OMsgTxt, ParsedURL *Relay);
+void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *StatusMessage, StrBuf *OMsgTxt, ParsedURL *Relay);
int CheckQEntryIsBounce(MailQEntry *ThisItem);