mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-10-24 15:23:55 +02:00
2020-11-18 Fred Gleason <fredg@paravelsystems.com>
* Added a '--dry-run' switch to the 'sendmail_test' test harness. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
@@ -20606,3 +20606,5 @@
|
|||||||
2020-11-18 Fred Gleason <fredg@paravelsystems.com>
|
2020-11-18 Fred Gleason <fredg@paravelsystems.com>
|
||||||
* Implemented support for multi-byte UTF-8 characters for the
|
* Implemented support for multi-byte UTF-8 characters for the
|
||||||
display-name component of e-mail addresses in 'RDSendMail()'.
|
display-name component of e-mail addresses in 'RDSendMail()'.
|
||||||
|
2020-11-18 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Added a '--dry-run' switch to the 'sendmail_test' test harness.
|
||||||
|
|||||||
@@ -103,6 +103,8 @@ QByteArray __RDSendMail_EncodeAddress(const QString &str,bool *ok)
|
|||||||
//
|
//
|
||||||
// Output in "display-name <local@domain>" format
|
// Output in "display-name <local@domain>" format
|
||||||
//
|
//
|
||||||
|
// FIXME: Add support for IDNA (see RFC5891)
|
||||||
|
//
|
||||||
if(name.isEmpty()) {
|
if(name.isEmpty()) {
|
||||||
return addr.toAscii();
|
return addr.toAscii();
|
||||||
}
|
}
|
||||||
@@ -116,7 +118,8 @@ QByteArray __RDSendMail_EncodeAddress(const QString &str,bool *ok)
|
|||||||
//
|
//
|
||||||
bool RDSendMail(QString *err_msg,const QString &subject,const QString &body,
|
bool RDSendMail(QString *err_msg,const QString &subject,const QString &body,
|
||||||
const QString &from_addr,const QStringList &to_addrs,
|
const QString &from_addr,const QStringList &to_addrs,
|
||||||
const QStringList &cc_addrs,const QStringList &bcc_addrs)
|
const QStringList &cc_addrs,const QStringList &bcc_addrs,
|
||||||
|
bool dry_run)
|
||||||
{
|
{
|
||||||
QStringList args;
|
QStringList args;
|
||||||
QProcess *proc=NULL;
|
QProcess *proc=NULL;
|
||||||
@@ -209,6 +212,13 @@ bool RDSendMail(QString *err_msg,const QString &subject,const QString &body,
|
|||||||
msg+="\r\n";
|
msg+="\r\n";
|
||||||
msg+=raw;
|
msg+=raw;
|
||||||
|
|
||||||
|
if(dry_run) {
|
||||||
|
printf("*** MESSAGE STARTS ***\n");
|
||||||
|
printf("%s",msg.toAscii().constData());
|
||||||
|
printf("*** MESSAGE ENDS ***\n");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Send message
|
// Send message
|
||||||
//
|
//
|
||||||
@@ -247,10 +257,11 @@ bool RDSendMail(QString *err_msg,const QString &subject,const QString &body,
|
|||||||
|
|
||||||
bool RDSendMail(QString *err_msg,const QString &subject,const QString &body,
|
bool RDSendMail(QString *err_msg,const QString &subject,const QString &body,
|
||||||
const QString &from_addr,const QString &to_addrs,
|
const QString &from_addr,const QString &to_addrs,
|
||||||
const QString &cc_addrs,const QString &bcc_addrs)
|
const QString &cc_addrs,const QString &bcc_addrs,bool dry_run)
|
||||||
{
|
{
|
||||||
return RDSendMail(err_msg,subject,body,from_addr,
|
return RDSendMail(err_msg,subject,body,from_addr,
|
||||||
to_addrs.split(",",QString::SkipEmptyParts),
|
to_addrs.split(",",QString::SkipEmptyParts),
|
||||||
cc_addrs.split(",",QString::SkipEmptyParts),
|
cc_addrs.split(",",QString::SkipEmptyParts),
|
||||||
bcc_addrs.split(",",QString::SkipEmptyParts));
|
bcc_addrs.split(",",QString::SkipEmptyParts),
|
||||||
|
dry_run);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,11 +27,11 @@
|
|||||||
bool RDSendMail(QString *err_msg,const QString &subject,const QString &body,
|
bool RDSendMail(QString *err_msg,const QString &subject,const QString &body,
|
||||||
const QString &from_addr,const QStringList &to_addrs,
|
const QString &from_addr,const QStringList &to_addrs,
|
||||||
const QStringList &cc_addrs=QStringList(),
|
const QStringList &cc_addrs=QStringList(),
|
||||||
const QStringList &bcc_addrs=QStringList());
|
const QStringList &bcc_addrs=QStringList(),bool dry_run=false);
|
||||||
bool RDSendMail(QString *err_msg,const QString &subject,const QString &body,
|
bool RDSendMail(QString *err_msg,const QString &subject,const QString &body,
|
||||||
const QString &from_addr,const QString &to_addrs,
|
const QString &from_addr,const QString &to_addrs,
|
||||||
const QString &cc_addrs=QString(),
|
const QString &cc_addrs=QString(),
|
||||||
const QString &bcc_addrs=QString());
|
const QString &bcc_addrs=QString(),bool dry_run=false);
|
||||||
|
|
||||||
|
|
||||||
#endif // RDSENDMAIL
|
#endif // RDSENDMAIL
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ MainObject::MainObject(QObject *parent)
|
|||||||
QString bcc_addrs;
|
QString bcc_addrs;
|
||||||
QString subject;
|
QString subject;
|
||||||
QString body;
|
QString body;
|
||||||
|
bool dry_run=false;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Read Command Options
|
// Read Command Options
|
||||||
@@ -73,6 +74,10 @@ MainObject::MainObject(QObject *parent)
|
|||||||
body=cmd->value(i);
|
body=cmd->value(i);
|
||||||
cmd->setProcessed(i,true);
|
cmd->setProcessed(i,true);
|
||||||
}
|
}
|
||||||
|
if(cmd->key(i)=="--dry-run") {
|
||||||
|
dry_run=true;
|
||||||
|
cmd->setProcessed(i,true);
|
||||||
|
}
|
||||||
if(!cmd->processed(i)) {
|
if(!cmd->processed(i)) {
|
||||||
fprintf(stderr,"sendmail_test: unknown option \"%s\"\n",
|
fprintf(stderr,"sendmail_test: unknown option \"%s\"\n",
|
||||||
(const char *)cmd->key(i));
|
(const char *)cmd->key(i));
|
||||||
@@ -80,7 +85,8 @@ MainObject::MainObject(QObject *parent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!RDSendMail(&err_msg,subject,body,from_addr,to_addrs,cc_addrs,bcc_addrs)) {
|
if(!RDSendMail(&err_msg,subject,body,
|
||||||
|
from_addr,to_addrs,cc_addrs,bcc_addrs,dry_run)) {
|
||||||
fprintf(stderr,"%s\n",err_msg.toUtf8().constData());
|
fprintf(stderr,"%s\n",err_msg.toUtf8().constData());
|
||||||
exit(256);
|
exit(256);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#include <qobject.h>
|
#include <qobject.h>
|
||||||
|
|
||||||
#define SENDMAIL_TEST_USAGE "[options]\n\nTest the Rivendell email sending routines\n\nOptions are:\n--from-address=<addr>\n Originating email address\n\n--to-addresses=<addrs>\n To addresses (comma seperated)\n\n--cc-addresses=<addrs>\n CC addresses (comma seperated)\n\n--bcc-addresses=<addrs>\n BCC addresses (comma seperated)\n\n--subject=<str>\n Message subject\n\n--body=<str>\n Message body\n\n"
|
#define SENDMAIL_TEST_USAGE "[options]\n\nTest the Rivendell email sending routines\n\nOptions are:\n--from-address=<addr>\n Originating email address\n\n--to-addresses=<addrs>\n To addresses (comma seperated)\n\n--cc-addresses=<addrs>\n CC addresses (comma seperated)\n\n--bcc-addresses=<addrs>\n BCC addresses (comma seperated)\n\n--subject=<str>\n Message subject\n\n--body=<str>\n Message body\n\n--dry-run\n Print the raw message to STDOUT, then exit\n\n"
|
||||||
|
|
||||||
class MainObject : public QObject
|
class MainObject : public QObject
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user