summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2010-03-14 20:02:03 +0100
committerRené 'Necoro' Neumann <necoro@necoro.net>2010-03-14 20:02:03 +0100
commitc8fab8cd56c88d2322104afc960c836a543cd3d6 (patch)
tree1ab5df3d5eea33644b808d739b16e3699761ae86
parentc0ef9b8f98eaf9fe46b87759d8083a8bd24620fa (diff)
downloadportato-c8fab8cd56c88d2322104afc960c836a543cd3d6.tar.gz
portato-c8fab8cd56c88d2322104afc960c836a543cd3d6.tar.bz2
portato-c8fab8cd56c88d2322104afc960c836a543cd3d6.zip
Send more files for bug mails
-rw-r--r--i18n/de.po97
-rw-r--r--i18n/messages.pot84
-rw-r--r--portato/gui/templates/MailInfoWindow.ui38
-rw-r--r--portato/gui/windows/mailinfo.py93
4 files changed, 194 insertions, 118 deletions
diff --git a/i18n/de.po b/i18n/de.po
index b7add36..88783a9 100644
--- a/i18n/de.po
+++ b/i18n/de.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Portato\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-05 21:26+0100\n"
-"PO-Revision-Date: 2010-03-05 21:27+0100\n"
+"POT-Creation-Date: 2010-03-14 20:01+0100\n"
+"PO-Revision-Date: 2010-03-14 20:01+0100\n"
"Last-Translator: René 'Necoro' Neumann <necoro@necoro.net>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -243,7 +243,7 @@ msgstr "<b>Autor:</b>"
#: portato/gui/templates/PluginWindow.ui:141
#: portato/gui/windows/pkglist.py:59
-#: portato/gui/windows/main.py:830
+#: portato/gui/windows/main.py:843
#: portato/gui/windows/plugin.py:27
msgid "Enabled"
msgstr "Aktiviert"
@@ -297,15 +297,11 @@ msgstr ""
"Kommentare /\n"
"Vorgehensweise um den Bug zu erzeugen?"
-#: portato/gui/templates/MailInfoWindow.ui:138
-msgid "Attach _Logfile"
-msgstr "Hänge _Logdatei an"
+#: portato/gui/templates/MailInfoWindow.ui:160
+msgid "These files will be sent:"
+msgstr "Die folgenden Dateien werden geschickt:"
-#: portato/gui/templates/MailInfoWindow.ui:142
-msgid "Attaches the logfile to the mail. This log only contains debug information."
-msgstr "Hängt die Logdatei an die Mail an. In der Datei sind nur Debug-Informationen enthalten."
-
-#: portato/gui/templates/MailInfoWindow.ui:206
+#: portato/gui/templates/MailInfoWindow.ui:220
msgid "_Send"
msgstr "_Send"
@@ -350,7 +346,7 @@ msgid "<b>Homepage:</b>"
msgstr "<b>Homepage:</b>"
#: portato/gui/templates/MainWindow.ui:462
-#: portato/gui/windows/main.py:831
+#: portato/gui/windows/main.py:844
msgid "Installed"
msgstr "Installiert"
@@ -406,13 +402,13 @@ msgid "Remove the selected package from the queue"
msgstr "Löscht das gewählte Paket aus der Queue"
#: portato/gui/templates/MainWindow.ui:782
-#: portato/gui/windows/main.py:611
+#: portato/gui/windows/main.py:620
msgid "Queue"
msgstr "Queue"
#: portato/gui/templates/MainWindow.ui:806
-#: portato/gui/windows/main.py:1240
-#: portato/gui/windows/main.py:1242
+#: portato/gui/windows/main.py:1253
+#: portato/gui/windows/main.py:1255
msgid "Console"
msgstr "Konsole"
@@ -509,7 +505,7 @@ msgstr ""
"Bitte führe <i>emerge --sync &amp;&amp; layman -S</i> aus."
#: portato/gui/dialogs.py:123
-#: portato/gui/windows/main.py:1289
+#: portato/gui/windows/main.py:1302
#, python-format
msgid "No versions of package '%s' found!"
msgstr "Keine Version vom Paket '%s' gefunden!"
@@ -592,14 +588,15 @@ msgstr "Pakete mit Updates"
msgid "World Packages"
msgstr "Pakete in \"World\""
-#: portato/gui/windows/mailinfo.py:83
+#: portato/gui/windows/mailinfo.py:144
#, python-format
msgid "An error occurred while sending. I think we were greylisted. The error: %s"
msgstr "Während des Sendes trat ein Fehler auf. Wahrscheinlich wurden wir ge-greylistet. Der Fehler: %s"
-#: portato/gui/windows/mailinfo.py:84
-msgid "Retrying after waiting 60 seconds."
-msgstr "Wiederhole den Versuch nach einer 60s Pause."
+#: portato/gui/windows/mailinfo.py:145
+#, python-format
+msgid "Retrying after waiting %d seconds."
+msgstr "Wiederhole den Versuch nach einer %ds Pause."
#: portato/gui/windows/splash.py:35
#, python-format
@@ -627,7 +624,7 @@ msgid "Package Set"
msgstr "Paket-Set"
#: portato/gui/windows/preference.py:259
-#: portato/gui/windows/main.py:833
+#: portato/gui/windows/main.py:846
#: portato/db/database.py:49
#: portato/db/database.py:50
msgid "Description"
@@ -655,90 +652,90 @@ msgstr "Paket konnte nicht gefunden werden: %s"
msgid "Masked by user"
msgstr "Vom Benutzer maskiert"
-#: portato/gui/windows/main.py:455
+#: portato/gui/windows/main.py:464
msgid "Loading Config"
msgstr "Lade Konfiguration"
-#: portato/gui/windows/main.py:467
+#: portato/gui/windows/main.py:476
msgid "Creating Database"
msgstr "Erstelle Datenbank"
-#: portato/gui/windows/main.py:471
+#: portato/gui/windows/main.py:480
msgid "Loading Plugins"
msgstr "Lade Plugins"
-#: portato/gui/windows/main.py:479
+#: portato/gui/windows/main.py:488
msgid "Building frontend"
msgstr "Erstelle Oberfläche"
-#: portato/gui/windows/main.py:545
+#: portato/gui/windows/main.py:554
msgid "Restoring Session"
msgstr "Lade Session"
-#: portato/gui/windows/main.py:555
+#: portato/gui/windows/main.py:564
msgid "Loading Plugin Widgets"
msgstr "Lade GUI-Elemente der Plugins"
-#: portato/gui/windows/main.py:558
+#: portato/gui/windows/main.py:567
msgid "Finishing startup"
msgstr "Erledige letzte Handgriffe :)"
-#: portato/gui/windows/main.py:614
+#: portato/gui/windows/main.py:623
msgid "Options"
msgstr "Optionen"
-#: portato/gui/windows/main.py:630
+#: portato/gui/windows/main.py:639
msgid "Categories"
msgstr "Kategorien"
-#: portato/gui/windows/main.py:689
+#: portato/gui/windows/main.py:698
msgid "Packages"
msgstr "Pakete"
-#: portato/gui/windows/main.py:724
+#: portato/gui/windows/main.py:733
#, python-format
msgid "Package '%s/%s' is disabled."
msgstr "Paket '%s/%s' wurde deaktiviert."
-#: portato/gui/windows/main.py:741
+#: portato/gui/windows/main.py:750
msgid "Versions"
msgstr "Versionen"
-#: portato/gui/windows/main.py:744
+#: portato/gui/windows/main.py:753
msgid "Slot"
msgstr "Slot"
-#: portato/gui/windows/main.py:832
+#: portato/gui/windows/main.py:845
msgid "Flag"
msgstr "Flag"
-#: portato/gui/windows/main.py:856
+#: portato/gui/windows/main.py:869
msgid "This is an expanded use flag and cannot be selected"
msgstr "Dies ist ein \"Expanded Use Flag\" und kann daher nicht ausgewählt werden."
-#: portato/gui/windows/main.py:914
+#: portato/gui/windows/main.py:927
#, python-format
msgid "Translating session from version %d to %d."
msgstr "Upgrade Session von Version %d auf Version %d."
-#: portato/gui/windows/main.py:917
+#: portato/gui/windows/main.py:930
#, python-format
msgid "Cannot translate session from version %d to %d."
msgstr "Kann Session nicht von Version %d nach %d upgraden."
-#: portato/gui/windows/main.py:1425
+#: portato/gui/windows/main.py:1438
msgid "use flags"
msgstr "Use Flags"
-#: portato/gui/windows/main.py:1437
+#: portato/gui/windows/main.py:1450
msgid "masking keywords"
msgstr "Masking Keywords"
-#: portato/gui/windows/main.py:1838
+#: portato/gui/windows/main.py:1851
msgid "The portage tree is not existing."
msgstr "Der Portage-Tree existiert nicht."
-#: portato/gui/windows/main.py:1842
+#: portato/gui/windows/main.py:1855
msgid "The portage tree seems to be empty."
msgstr "Der Portage-Tree scheint leer zu sein."
@@ -942,22 +939,22 @@ msgstr "Leere Datenbank..."
msgid "Populating database..."
msgstr "Fülle Datenbank..."
-#: portato/session.py:67
+#: portato/session.py:69
#, python-format
msgid "Loading '%s' session from %s."
msgstr "Lade '%s'-Session von %s."
-#: portato/session.py:69
+#: portato/session.py:71
#, python-format
msgid "Loading session from %s."
msgstr "Lade Session von %s."
-#: portato/session.py:141
+#: portato/session.py:139
#, python-format
msgid "Saving '%s' session to %s."
msgstr "Schreibe '%s'-Session nach %s."
-#: portato/session.py:143
+#: portato/session.py:141
#, python-format
msgid "Saving session to %s."
msgstr "Schreibe Session nach %s."
@@ -1115,6 +1112,14 @@ msgstr "Emerge fehlgeschlagen!"
msgid "Error Code: %d"
msgstr "Fehler-Code: %d"
+#~ msgid "Attach _Logfile"
+#~ msgstr "Hänge _Logdatei an"
+#~ msgid ""
+#~ "Attaches the logfile to the mail. This log only contains debug "
+#~ "information."
+#~ msgstr ""
+#~ "Hängt die Logdatei an die Mail an. In der Datei sind nur Debug-"
+#~ "Informationen enthalten."
#~ msgid "Plu_gins"
#~ msgstr "Plu_gins"
#~ msgid "_File"
diff --git a/i18n/messages.pot b/i18n/messages.pot
index 26f1dd1..555837f 100644
--- a/i18n/messages.pot
+++ b/i18n/messages.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-05 21:26+0100\n"
+"POT-Creation-Date: 2010-03-14 20:01+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -239,7 +239,7 @@ msgid "<b>Author:</b>"
msgstr ""
#: portato/gui/templates/PluginWindow.ui:141 portato/gui/windows/pkglist.py:59
-#: portato/gui/windows/main.py:830 portato/gui/windows/plugin.py:27
+#: portato/gui/windows/main.py:843 portato/gui/windows/plugin.py:27
msgid "Enabled"
msgstr ""
@@ -284,16 +284,11 @@ msgid ""
"what did you do to hit the bug?"
msgstr ""
-#: portato/gui/templates/MailInfoWindow.ui:138
-msgid "Attach _Logfile"
+#: portato/gui/templates/MailInfoWindow.ui:160
+msgid "These files will be sent:"
msgstr ""
-#: portato/gui/templates/MailInfoWindow.ui:142
-msgid ""
-"Attaches the logfile to the mail. This log only contains debug information."
-msgstr ""
-
-#: portato/gui/templates/MailInfoWindow.ui:206
+#: portato/gui/templates/MailInfoWindow.ui:220
msgid "_Send"
msgstr ""
@@ -337,7 +332,7 @@ msgstr ""
msgid "<b>Homepage:</b>"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:462 portato/gui/windows/main.py:831
+#: portato/gui/templates/MainWindow.ui:462 portato/gui/windows/main.py:844
msgid "Installed"
msgstr ""
@@ -387,12 +382,12 @@ msgstr ""
msgid "Remove the selected package from the queue"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:782 portato/gui/windows/main.py:611
+#: portato/gui/templates/MainWindow.ui:782 portato/gui/windows/main.py:620
msgid "Queue"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:806 portato/gui/windows/main.py:1240
-#: portato/gui/windows/main.py:1242
+#: portato/gui/templates/MainWindow.ui:806 portato/gui/windows/main.py:1253
+#: portato/gui/windows/main.py:1255
msgid "Console"
msgstr ""
@@ -485,7 +480,7 @@ msgid ""
"Please run <i>emerge --sync &amp;&amp; layman -S</i>."
msgstr ""
-#: portato/gui/dialogs.py:123 portato/gui/windows/main.py:1289
+#: portato/gui/dialogs.py:123 portato/gui/windows/main.py:1302
#, python-format
msgid "No versions of package '%s' found!"
msgstr ""
@@ -573,14 +568,15 @@ msgstr ""
msgid "World Packages"
msgstr ""
-#: portato/gui/windows/mailinfo.py:83
+#: portato/gui/windows/mailinfo.py:144
#, python-format
msgid ""
"An error occurred while sending. I think we were greylisted. The error: %s"
msgstr ""
-#: portato/gui/windows/mailinfo.py:84
-msgid "Retrying after waiting 60 seconds."
+#: portato/gui/windows/mailinfo.py:145
+#, python-format
+msgid "Retrying after waiting %d seconds."
msgstr ""
#: portato/gui/windows/splash.py:35
@@ -608,7 +604,7 @@ msgstr ""
msgid "Package Set"
msgstr ""
-#: portato/gui/windows/preference.py:259 portato/gui/windows/main.py:833
+#: portato/gui/windows/preference.py:259 portato/gui/windows/main.py:846
#: portato/db/database.py:49 portato/db/database.py:50
msgid "Description"
msgstr ""
@@ -634,90 +630,90 @@ msgstr ""
msgid "Masked by user"
msgstr ""
-#: portato/gui/windows/main.py:455
+#: portato/gui/windows/main.py:464
msgid "Loading Config"
msgstr ""
-#: portato/gui/windows/main.py:467
+#: portato/gui/windows/main.py:476
msgid "Creating Database"
msgstr ""
-#: portato/gui/windows/main.py:471
+#: portato/gui/windows/main.py:480
msgid "Loading Plugins"
msgstr ""
-#: portato/gui/windows/main.py:479
+#: portato/gui/windows/main.py:488
msgid "Building frontend"
msgstr ""
-#: portato/gui/windows/main.py:545
+#: portato/gui/windows/main.py:554
msgid "Restoring Session"
msgstr ""
-#: portato/gui/windows/main.py:555
+#: portato/gui/windows/main.py:564
msgid "Loading Plugin Widgets"
msgstr ""
-#: portato/gui/windows/main.py:558
+#: portato/gui/windows/main.py:567
msgid "Finishing startup"
msgstr ""
-#: portato/gui/windows/main.py:614
+#: portato/gui/windows/main.py:623
msgid "Options"
msgstr ""
-#: portato/gui/windows/main.py:630
+#: portato/gui/windows/main.py:639
msgid "Categories"
msgstr ""
-#: portato/gui/windows/main.py:689
+#: portato/gui/windows/main.py:698
msgid "Packages"
msgstr ""
-#: portato/gui/windows/main.py:724
+#: portato/gui/windows/main.py:733
#, python-format
msgid "Package '%s/%s' is disabled."
msgstr ""
-#: portato/gui/windows/main.py:741
+#: portato/gui/windows/main.py:750
msgid "Versions"
msgstr ""
-#: portato/gui/windows/main.py:744
+#: portato/gui/windows/main.py:753
msgid "Slot"
msgstr ""
-#: portato/gui/windows/main.py:832
+#: portato/gui/windows/main.py:845
msgid "Flag"
msgstr ""
-#: portato/gui/windows/main.py:856
+#: portato/gui/windows/main.py:869
msgid "This is an expanded use flag and cannot be selected"
msgstr ""
-#: portato/gui/windows/main.py:914
+#: portato/gui/windows/main.py:927
#, python-format
msgid "Translating session from version %d to %d."
msgstr ""
-#: portato/gui/windows/main.py:917
+#: portato/gui/windows/main.py:930
#, python-format
msgid "Cannot translate session from version %d to %d."
msgstr ""
-#: portato/gui/windows/main.py:1425
+#: portato/gui/windows/main.py:1438
msgid "use flags"
msgstr ""
-#: portato/gui/windows/main.py:1437
+#: portato/gui/windows/main.py:1450
msgid "masking keywords"
msgstr ""
-#: portato/gui/windows/main.py:1838
+#: portato/gui/windows/main.py:1851
msgid "The portage tree is not existing."
msgstr ""
-#: portato/gui/windows/main.py:1842
+#: portato/gui/windows/main.py:1855
msgid "The portage tree seems to be empty."
msgstr ""
@@ -920,22 +916,22 @@ msgstr ""
msgid "Populating database..."
msgstr ""
-#: portato/session.py:67
+#: portato/session.py:69
#, python-format
msgid "Loading '%s' session from %s."
msgstr ""
-#: portato/session.py:69
+#: portato/session.py:71
#, python-format
msgid "Loading session from %s."
msgstr ""
-#: portato/session.py:141
+#: portato/session.py:139
#, python-format
msgid "Saving '%s' session to %s."
msgstr ""
-#: portato/session.py:143
+#: portato/session.py:141
#, python-format
msgid "Saving session to %s."
msgstr ""
diff --git a/portato/gui/templates/MailInfoWindow.ui b/portato/gui/templates/MailInfoWindow.ui
index 4551cdb..e3cdd1f 100644
--- a/portato/gui/templates/MailInfoWindow.ui
+++ b/portato/gui/templates/MailInfoWindow.ui
@@ -134,25 +134,39 @@ what did you do to hit the bug?</property>
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="logCheck">
- <property name="label" translatable="yes">Attach _Logfile</property>
+ <object class="GtkFrame" id="frame1">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Attaches the logfile to the mail. This log only contains debug information.</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTreeView" id="fileList">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="headers_clickable">False</property>
+ <property name="enable_search">False</property>
+ <signal name="row_activated" handler="cb_file_clicked"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">These files will be sent:</property>
+ </object>
+ </child>
</object>
<packing>
+ <property name="right_attach">2</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
- <property name="x_options">GTK_FILL</property>
</packing>
</child>
- <child>
- <placeholder/>
- </child>
</object>
<packing>
<property name="padding">5</property>
diff --git a/portato/gui/windows/mailinfo.py b/portato/gui/windows/mailinfo.py
index 0ee232a..6d6e93b 100644
--- a/portato/gui/windows/mailinfo.py
+++ b/portato/gui/windows/mailinfo.py
@@ -14,15 +14,41 @@ from __future__ import absolute_import, with_statement
import smtplib, socket
import time
+import gtk, pango
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
+from os.path import basename
from .basic import AbstractDialog
from ..utils import GtkThread
from ..dialogs import mail_failure_dialog
from ...helper import debug, info
-from ...constants import VERSION
+from ...constants import VERSION, CONFIG_LOCATION
from ...log import LOGFILE
+from ... import session
+
+class ShowDialog (gtk.Dialog):
+
+ def __init__(self, parent, f):
+ gtk.Dialog.__init__(self, f, parent, buttons = (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE))
+
+ textview = gtk.TextView()
+ textview.set_editable(False)
+ textview.modify_font(pango.FontDescription("Monospace"))
+ textview.set_size_request(gtk.gdk.screen_width()/2, gtk.gdk.screen_height()/3)
+
+ sw = gtk.ScrolledWindow();
+ sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ sw.add(textview)
+
+ self.vbox.add(sw)
+
+ textbuffer = textview.get_buffer()
+
+ with open(f) as text:
+ textbuffer.set_text(text.read())
+
+ self.vbox.show_all()
class MailInfoWindow (AbstractDialog):
TO = "bugs@portato.necoro.net"
@@ -30,10 +56,42 @@ class MailInfoWindow (AbstractDialog):
def __init__ (self, parent, tb):
AbstractDialog.__init__(self, parent)
+
+ self.files = [LOGFILE, CONFIG_LOCATION] + [s._file for s in session.sessionlist]
+ self.fileList = self.tree.get_widget("fileList")
+ self.build_file_list()
self.tb = tb
self.window.show_all()
+ def build_file_list(self):
+ store = gtk.ListStore(bool, str)
+
+ for f in self.files:
+ store.append((True, f))
+
+ self.fileList.set_model(store)
+ cell = gtk.CellRendererText()
+ tCell = gtk.CellRendererToggle()
+ tCell.set_property("activatable", True)
+ tCell.connect("toggled", self.cb_file_toggled)
+
+ self.fileList.append_column(gtk.TreeViewColumn(None, tCell, active = 0))
+ self.fileList.append_column(gtk.TreeViewColumn(None, cell, text = 1))
+
+ def cb_file_toggled(self, cell, path):
+ store = self.fileList.get_model()
+ store[path][0] = not store[path][0]
+ return True
+
+ def cb_file_clicked(self, view, path, *args):
+ store = view.get_model()
+ f = store[path][1]
+
+ dialog = ShowDialog(self.window, f)
+ dialog.run()
+ dialog.destroy()
+
def set_data (self):
self.message = MIMEMultipart()
self.message["Subject"] = "[Bug Report] Bug in Portato %s" % VERSION
@@ -63,13 +121,15 @@ class MailInfoWindow (AbstractDialog):
txtmsg = MIMEText(text, "plain", "utf-8")
self.message.attach(txtmsg)
- # log
- if self.tree.get_widget("logCheck").get_active():
- with open(LOGFILE, "r") as f:
- log = MIMEText(f.read(), "plain", "utf-8")
- log.add_header('Content-Disposition', 'attachment', filename='portato.log')
+ # logs
+ for (active, f) in self.fileList.get_model():
+ if active:
+ debug("Attaching '%s'", f)
+ with open(f, "r") as text:
+ log = MIMEText(text.read(), "plain", "utf-8")
+ log.add_header('Content-Disposition', 'attachment', filename=basename(f))
- self.message.attach(log)
+ self.message.attach(log)
def send (self):
try:
@@ -77,21 +137,22 @@ class MailInfoWindow (AbstractDialog):
server = smtplib.SMTP("mail.necoro.eu")
debug("Sending mail")
try:
- try:
- server.sendmail(self.addr, self.TO, self.message.as_string())
- except smtplib.SMTPRecipientsRefused, e:
- info(_("An error occurred while sending. I think we were greylisted. The error: %s") % e)
- info(_("Retrying after waiting 60 seconds."))
- time.sleep(60)
- server.sendmail(self.addr, self.TO, self.message.as_string())
- debug("Sent")
+ for i in range(5): # try 5 times at max
+ try:
+ server.sendmail(self.addr, self.TO, self.message.as_string())
+ except smtplib.SMTPRecipientsRefused, e:
+ info(_("An error occurred while sending. I think we were greylisted. The error: %s") % e)
+ info(_("Retrying after waiting %d seconds."), 30)
+ time.sleep(30)
+ else:
+ debug("Sent")
+ break
finally:
server.quit()
except socket.error, e:
mail_failure_dialog("%s (Code: %s)" % (e.args[1], e.args[0]))
def cb_cancel_clicked (self, *args):
-
self.close()
return True