summaryrefslogtreecommitdiffstats
path: root/tdeio/misc/tdesendbugmail/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tdeio/misc/tdesendbugmail/main.cpp')
-rw-r--r--tdeio/misc/tdesendbugmail/main.cpp142
1 files changed, 142 insertions, 0 deletions
diff --git a/tdeio/misc/tdesendbugmail/main.cpp b/tdeio/misc/tdesendbugmail/main.cpp
new file mode 100644
index 000000000..162e6ad5c
--- /dev/null
+++ b/tdeio/misc/tdesendbugmail/main.cpp
@@ -0,0 +1,142 @@
+// $Id$
+
+#include <sys/types.h>
+#include "main.h"
+#include <pwd.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <tqtextstream.h>
+
+#include <kapplication.h>
+#include <kemailsettings.h>
+#include <klocale.h>
+#include <kcmdlineargs.h>
+#include <kaboutdata.h>
+#include <kdebug.h>
+#include <tdeconfig.h>
+
+#include "smtp.h"
+
+static KCmdLineOptions options[] = {
+ { "subject <argument>", I18N_NOOP("Subject line"), 0 },
+ { "recipient <argument>", I18N_NOOP("Recipient"), "submit@bugs.kde.org" },
+ KCmdLineLastOption
+};
+
+void BugMailer::slotError(int errornum) {
+ kdDebug() << "slotError\n";
+ TQString str, lstr;
+
+ switch(errornum) {
+ case SMTP::CONNECTERROR:
+ lstr = i18n("Error connecting to server.");
+ break;
+ case SMTP::NOTCONNECTED:
+ lstr = i18n("Not connected.");
+ break;
+ case SMTP::CONNECTTIMEOUT:
+ lstr = i18n("Connection timed out.");
+ break;
+ case SMTP::INTERACTTIMEOUT:
+ lstr = i18n("Time out waiting for server interaction.");
+ break;
+ default:
+ lstr = sm->getLastLine().stripWhiteSpace();
+ lstr = i18n("Server said: \"%1\"").arg(lstr);
+ }
+ fputs(lstr.utf8().data(), stdout);
+ fflush(stdout);
+
+ ::exit(1);
+}
+
+void BugMailer::slotSend() {
+ kdDebug() << "slotSend\n";
+ ::exit(0);
+}
+
+int main(int argc, char **argv) {
+
+ KLocale::setMainCatalogue("tdelibs");
+ TDEAboutData d("tdesendbugmail", I18N_NOOP("KSendBugMail"), "1.0",
+ I18N_NOOP("Sends a short bug report to submit@bugs.kde.org"),
+ TDEAboutData::License_GPL, "(c) 2000 Stephan Kulow");
+ d.addAuthor("Stephan Kulow", I18N_NOOP("Author"), "coolo@kde.org");
+
+ TDECmdLineArgs::init(argc, argv, &d);
+ TDECmdLineArgs::addCmdLineOptions(options);
+ TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs();
+
+ TDEApplication a(false, false);
+
+ TQCString recipient = args->getOption("recipient");
+ if (recipient.isEmpty())
+ recipient = "submit@bugs.kde.org";
+ else {
+ if (recipient.at(0) == '\'') {
+ recipient = recipient.mid(1).left(recipient.length() - 2);
+ }
+ }
+ kdDebug() << "recp \"" << recipient << "\"\n";
+
+ TQCString subject = args->getOption("subject");
+ if (subject.isEmpty())
+ subject = "(no subject)";
+ else {
+ if (subject.at(0) == '\'')
+ subject = subject.mid(1).left(subject.length() - 2);
+ }
+ TQTextIStream input(stdin);
+ TQString text, line;
+ while (!input.eof()) {
+ line = input.readLine();
+ text += line + "\r\n";
+ }
+ kdDebug() << text << endl;
+
+ KEMailSettings emailConfig;
+ emailConfig.setProfile(emailConfig.defaultProfileName());
+ TQString fromaddr = emailConfig.getSetting(KEMailSettings::EmailAddress);
+ if (!fromaddr.isEmpty()) {
+ TQString name = emailConfig.getSetting(KEMailSettings::RealName);
+ if (!name.isEmpty())
+ fromaddr = name + TQString::fromLatin1(" <") + fromaddr + TQString::fromLatin1(">");
+ } else {
+ struct passwd *p;
+ p = getpwuid(getuid());
+ fromaddr = TQString::fromLatin1(p->pw_name);
+ fromaddr += "@";
+ char buffer[256];
+ buffer[0] = '\0';
+ if(!gethostname(buffer, sizeof(buffer)))
+ buffer[sizeof(buffer)-1] = '\0';
+ fromaddr += buffer;
+ }
+ kdDebug() << "fromaddr \"" << fromaddr << "\"" << endl;
+
+ TQString server = emailConfig.getSetting(KEMailSettings::OutServer);
+ if (server.isEmpty())
+ server=TQString::fromLatin1("bugs.kde.org");
+
+ SMTP *sm = new SMTP;
+ BugMailer bm(sm);
+
+ TQObject::connect(sm, TQT_SIGNAL(messageSent()), &bm, TQT_SLOT(slotSend()));
+ TQObject::connect(sm, TQT_SIGNAL(error(int)), &bm, TQT_SLOT(slotError(int)));
+ sm->setServerHost(server);
+ sm->setPort(25);
+ sm->setSenderAddress(fromaddr);
+ sm->setRecipientAddress(recipient);
+ sm->setMessageSubject(subject);
+ sm->setMessageHeader(TQString::fromLatin1("From: %1\r\nTo: %2\r\n").arg(fromaddr).arg(recipient.data()));
+ sm->setMessageBody(text);
+ sm->sendMessage();
+
+ int r = a.exec();
+ kdDebug() << "execing " << r << endl;
+ delete sm;
+ return r;
+}
+
+#include "main.moc"