author | zautrix <zautrix> | 2004-09-10 16:47:36 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-09-10 16:47:36 (UTC) |
commit | 157120031b77a3d9f10d780a66b6441dac1399fa (patch) (unidiff) | |
tree | fe756e71b5290940d2824d06c11e5f887a6f00e2 /kmicromail | |
parent | 3b3e910d97287f6a538c114458d97800d430799a (diff) | |
download | kdepimpi-157120031b77a3d9f10d780a66b6441dac1399fa.zip kdepimpi-157120031b77a3d9f10d780a66b6441dac1399fa.tar.gz kdepimpi-157120031b77a3d9f10d780a66b6441dac1399fa.tar.bz2 |
Fixes in password dislog handling
-rw-r--r-- | kmicromail/libmailwrapper/imapwrapper.cpp | 18 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/nntpwrapper.cpp | 25 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/pop3wrapper.cpp | 18 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/smtpwrapper.cpp | 19 |
4 files changed, 34 insertions, 46 deletions
diff --git a/kmicromail/libmailwrapper/imapwrapper.cpp b/kmicromail/libmailwrapper/imapwrapper.cpp index 11d3343..021633b 100644 --- a/kmicromail/libmailwrapper/imapwrapper.cpp +++ b/kmicromail/libmailwrapper/imapwrapper.cpp | |||
@@ -51,181 +51,181 @@ bool IMAPwrapper::start_tls(bool force_tls) | |||
51 | mailimap_capability_data * cap_data = 0; | 51 | mailimap_capability_data * cap_data = 0; |
52 | 52 | ||
53 | err = mailimap_capability(m_imap,&cap_data); | 53 | err = mailimap_capability(m_imap,&cap_data); |
54 | if (err != MAILIMAP_NO_ERROR) { | 54 | if (err != MAILIMAP_NO_ERROR) { |
55 | Global::statusMessage("error getting capabilities!"); | 55 | Global::statusMessage("error getting capabilities!"); |
56 | return false; | 56 | return false; |
57 | } | 57 | } |
58 | clistiter * cur; | 58 | clistiter * cur; |
59 | for(cur = clist_begin(cap_data->cap_list) ; cur != NULL;cur = clist_next(cur)) { | 59 | for(cur = clist_begin(cap_data->cap_list) ; cur != NULL;cur = clist_next(cur)) { |
60 | struct mailimap_capability * cap; | 60 | struct mailimap_capability * cap; |
61 | cap = (struct mailimap_capability *)clist_content(cur); | 61 | cap = (struct mailimap_capability *)clist_content(cur); |
62 | if (cap->cap_type == MAILIMAP_CAPABILITY_NAME) { | 62 | if (cap->cap_type == MAILIMAP_CAPABILITY_NAME) { |
63 | if (strcasecmp(cap->cap_data.cap_name, "STARTTLS") == 0) { | 63 | if (strcasecmp(cap->cap_data.cap_name, "STARTTLS") == 0) { |
64 | try_tls = true; | 64 | try_tls = true; |
65 | break; | 65 | break; |
66 | } | 66 | } |
67 | } | 67 | } |
68 | } | 68 | } |
69 | if (cap_data) { | 69 | if (cap_data) { |
70 | mailimap_capability_data_free(cap_data); | 70 | mailimap_capability_data_free(cap_data); |
71 | } | 71 | } |
72 | if (try_tls) { | 72 | if (try_tls) { |
73 | err = mailimap_starttls(m_imap); | 73 | err = mailimap_starttls(m_imap); |
74 | if (err != MAILIMAP_NO_ERROR && force_tls) { | 74 | if (err != MAILIMAP_NO_ERROR && force_tls) { |
75 | Global::statusMessage(tr("Server has no TLS support!")); | 75 | Global::statusMessage(tr("Server has no TLS support!")); |
76 | try_tls = false; | 76 | try_tls = false; |
77 | } else { | 77 | } else { |
78 | mailstream_low * low; | 78 | mailstream_low * low; |
79 | mailstream_low * new_low; | 79 | mailstream_low * new_low; |
80 | low = mailstream_get_low(m_imap->imap_stream); | 80 | low = mailstream_get_low(m_imap->imap_stream); |
81 | if (!low) { | 81 | if (!low) { |
82 | try_tls = false; | 82 | try_tls = false; |
83 | } else { | 83 | } else { |
84 | int fd = mailstream_low_get_fd(low); | 84 | int fd = mailstream_low_get_fd(low); |
85 | if (fd > -1 && (new_low = mailstream_low_ssl_open(fd))!=0) { | 85 | if (fd > -1 && (new_low = mailstream_low_ssl_open(fd))!=0) { |
86 | mailstream_low_free(low); | 86 | mailstream_low_free(low); |
87 | mailstream_set_low(m_imap->imap_stream, new_low); | 87 | mailstream_set_low(m_imap->imap_stream, new_low); |
88 | } else { | 88 | } else { |
89 | try_tls = false; | 89 | try_tls = false; |
90 | } | 90 | } |
91 | } | 91 | } |
92 | } | 92 | } |
93 | } | 93 | } |
94 | return try_tls; | 94 | return try_tls; |
95 | } | 95 | } |
96 | 96 | ||
97 | void IMAPwrapper::login() | 97 | void IMAPwrapper::login() |
98 | { | 98 | { |
99 | const char *server, *user, *pass; | 99 | QString server, user, pass; |
100 | uint16_t port; | 100 | uint16_t port; |
101 | int err = MAILIMAP_NO_ERROR; | 101 | int err = MAILIMAP_NO_ERROR; |
102 | 102 | ||
103 | if (account->getOffline()) return; | 103 | if (account->getOffline()) return; |
104 | /* we are connected this moment */ | 104 | /* we are connected this moment */ |
105 | /* TODO: setup a timer holding the line or if connection closed - delete the value */ | 105 | /* TODO: setup a timer holding the line or if connection closed - delete the value */ |
106 | if (m_imap) { | 106 | if (m_imap) { |
107 | err = mailimap_noop(m_imap); | 107 | err = mailimap_noop(m_imap); |
108 | if (err!=MAILIMAP_NO_ERROR) { | 108 | if (err!=MAILIMAP_NO_ERROR) { |
109 | logout(); | 109 | logout(); |
110 | } else { | 110 | } else { |
111 | mailstream_flush(m_imap->imap_stream); | 111 | mailstream_flush(m_imap->imap_stream); |
112 | return; | 112 | return; |
113 | } | 113 | } |
114 | } | 114 | } |
115 | server = account->getServer().latin1(); | 115 | server = account->getServer(); |
116 | port = account->getPort().toUInt(); | 116 | port = account->getPort().toUInt(); |
117 | if ( account->getUser().isEmpty() || account->getPassword().isEmpty() ) { | 117 | if ( account->getUser().isEmpty() || account->getPassword().isEmpty() ) { |
118 | LoginDialog login( account->getUser(), account->getPassword(), NULL, 0, true ); | 118 | LoginDialog login( account->getUser(), account->getPassword(), NULL, 0, true ); |
119 | login.show(); | 119 | login.show(); |
120 | if ( QDialog::Accepted == login.exec() ) { | 120 | if ( QDialog::Accepted == login.exec() ) { |
121 | // ok | 121 | // ok |
122 | user = login.getUser().latin1(); | 122 | user = login.getUser(); |
123 | pass = login.getPassword().latin1(); | 123 | pass = login.getPassword(); |
124 | } else { | 124 | } else { |
125 | // cancel | 125 | // cancel |
126 | return; | 126 | return; |
127 | } | 127 | } |
128 | } else { | 128 | } else { |
129 | user = account->getUser().latin1(); | 129 | user = account->getUser(); |
130 | pass = account->getPassword().latin1(); | 130 | pass = account->getPassword(); |
131 | } | 131 | } |
132 | 132 | ||
133 | m_imap = mailimap_new( 20, &imap_progress ); | 133 | m_imap = mailimap_new( 20, &imap_progress ); |
134 | 134 | ||
135 | /* connect */ | 135 | /* connect */ |
136 | bool ssl = false; | 136 | bool ssl = false; |
137 | bool try_tls = false; | 137 | bool try_tls = false; |
138 | bool force_tls = false; | 138 | bool force_tls = false; |
139 | 139 | ||
140 | if ( account->ConnectionType() == 2 ) { | 140 | if ( account->ConnectionType() == 2 ) { |
141 | ssl = true; | 141 | ssl = true; |
142 | } | 142 | } |
143 | if (account->ConnectionType()==1) { | 143 | if (account->ConnectionType()==1) { |
144 | force_tls = true; | 144 | force_tls = true; |
145 | } | 145 | } |
146 | 146 | ||
147 | if ( ssl ) { | 147 | if ( ssl ) { |
148 | qDebug("using ssl "); | 148 | qDebug("using ssl "); |
149 | err = mailimap_ssl_connect( m_imap, (char*)server, port ); | 149 | err = mailimap_ssl_connect( m_imap, (char*)server.latin1(), port ); |
150 | } else { | 150 | } else { |
151 | err = mailimap_socket_connect( m_imap, (char*)server, port ); | 151 | err = mailimap_socket_connect( m_imap, (char*)server.latin1(), port ); |
152 | } | 152 | } |
153 | 153 | ||
154 | if ( err != MAILIMAP_NO_ERROR && | 154 | if ( err != MAILIMAP_NO_ERROR && |
155 | err != MAILIMAP_NO_ERROR_AUTHENTICATED && | 155 | err != MAILIMAP_NO_ERROR_AUTHENTICATED && |
156 | err != MAILIMAP_NO_ERROR_NON_AUTHENTICATED ) { | 156 | err != MAILIMAP_NO_ERROR_NON_AUTHENTICATED ) { |
157 | QString failure = ""; | 157 | QString failure = ""; |
158 | if (err == MAILIMAP_ERROR_CONNECTION_REFUSED) { | 158 | if (err == MAILIMAP_ERROR_CONNECTION_REFUSED) { |
159 | failure="Connection refused"; | 159 | failure="Connection refused"; |
160 | } else { | 160 | } else { |
161 | failure="Unknown failure"; | 161 | failure="Unknown failure"; |
162 | } | 162 | } |
163 | Global::statusMessage(tr("error connecting imap server: %1").arg(failure)); | 163 | Global::statusMessage(tr("error connecting imap server: %1").arg(failure)); |
164 | mailimap_free( m_imap ); | 164 | mailimap_free( m_imap ); |
165 | m_imap = 0; | 165 | m_imap = 0; |
166 | return; | 166 | return; |
167 | } | 167 | } |
168 | 168 | ||
169 | if (!ssl) { | 169 | if (!ssl) { |
170 | try_tls = start_tls(force_tls); | 170 | try_tls = start_tls(force_tls); |
171 | } | 171 | } |
172 | 172 | ||
173 | bool ok = true; | 173 | bool ok = true; |
174 | if (force_tls && !try_tls) { | 174 | if (force_tls && !try_tls) { |
175 | Global::statusMessage(tr("Server has no TLS support!")); | 175 | Global::statusMessage(tr("Server has no TLS support!")); |
176 | ok = false; | 176 | ok = false; |
177 | } | 177 | } |
178 | 178 | ||
179 | 179 | ||
180 | /* login */ | 180 | /* login */ |
181 | 181 | ||
182 | if (ok) { | 182 | if (ok) { |
183 | err = mailimap_login_simple( m_imap, (char*)user, (char*)pass ); | 183 | err = mailimap_login_simple( m_imap, (char*)user.latin1(), (char*)pass.latin1() ); |
184 | if ( err != MAILIMAP_NO_ERROR ) { | 184 | if ( err != MAILIMAP_NO_ERROR ) { |
185 | Global::statusMessage(tr("error logging in imap server: %1").arg(m_imap->imap_response)); | 185 | Global::statusMessage(tr("error logging in imap server: %1").arg(m_imap->imap_response)); |
186 | ok = false; | 186 | ok = false; |
187 | } | 187 | } |
188 | } | 188 | } |
189 | if (!ok) { | 189 | if (!ok) { |
190 | err = mailimap_close( m_imap ); | 190 | err = mailimap_close( m_imap ); |
191 | mailimap_free( m_imap ); | 191 | mailimap_free( m_imap ); |
192 | m_imap = 0; | 192 | m_imap = 0; |
193 | } | 193 | } |
194 | } | 194 | } |
195 | 195 | ||
196 | void IMAPwrapper::logout() | 196 | void IMAPwrapper::logout() |
197 | { | 197 | { |
198 | int err = MAILIMAP_NO_ERROR; | 198 | int err = MAILIMAP_NO_ERROR; |
199 | if (!m_imap) return; | 199 | if (!m_imap) return; |
200 | err = mailimap_logout( m_imap ); | 200 | err = mailimap_logout( m_imap ); |
201 | err = mailimap_close( m_imap ); | 201 | err = mailimap_close( m_imap ); |
202 | mailimap_free( m_imap ); | 202 | mailimap_free( m_imap ); |
203 | m_imap = 0; | 203 | m_imap = 0; |
204 | m_Lastmbox = ""; | 204 | m_Lastmbox = ""; |
205 | } | 205 | } |
206 | 206 | ||
207 | void IMAPwrapper::listMessages(const QString&mailbox,QValueList<Opie::Core::OSmartPointer<RecMail> > &target , int maxSizeInKb) | 207 | void IMAPwrapper::listMessages(const QString&mailbox,QValueList<Opie::Core::OSmartPointer<RecMail> > &target , int maxSizeInKb) |
208 | { | 208 | { |
209 | int err = MAILIMAP_NO_ERROR; | 209 | int err = MAILIMAP_NO_ERROR; |
210 | clist *result = 0; | 210 | clist *result = 0; |
211 | clistcell *current; | 211 | clistcell *current; |
212 | mailimap_fetch_type *fetchType = 0; | 212 | mailimap_fetch_type *fetchType = 0; |
213 | mailimap_set *set = 0; | 213 | mailimap_set *set = 0; |
214 | 214 | ||
215 | login(); | 215 | login(); |
216 | if (!m_imap) { | 216 | if (!m_imap) { |
217 | return; | 217 | return; |
218 | } | 218 | } |
219 | /* select mailbox READONLY for operations */ | 219 | /* select mailbox READONLY for operations */ |
220 | err = selectMbox(mailbox); | 220 | err = selectMbox(mailbox); |
221 | if ( err != MAILIMAP_NO_ERROR ) { | 221 | if ( err != MAILIMAP_NO_ERROR ) { |
222 | return; | 222 | return; |
223 | } | 223 | } |
224 | 224 | ||
225 | int last = m_imap->imap_selection_info->sel_exists; | 225 | int last = m_imap->imap_selection_info->sel_exists; |
226 | 226 | ||
227 | if (last == 0) { | 227 | if (last == 0) { |
228 | Global::statusMessage(tr("Mailbox has no mails")); | 228 | Global::statusMessage(tr("Mailbox has no mails")); |
229 | return; | 229 | return; |
230 | } else { | 230 | } else { |
231 | } | 231 | } |
diff --git a/kmicromail/libmailwrapper/nntpwrapper.cpp b/kmicromail/libmailwrapper/nntpwrapper.cpp index f5d7f16..93cd2b5 100644 --- a/kmicromail/libmailwrapper/nntpwrapper.cpp +++ b/kmicromail/libmailwrapper/nntpwrapper.cpp | |||
@@ -72,148 +72,139 @@ RecBodyP NNTPwrapper::fetchBody( const RecMailP &mail ) { | |||
72 | memset(message,0,4096); | 72 | memset(message,0,4096); |
73 | while (msg_cache.readBlock(message,4095)>0) { | 73 | while (msg_cache.readBlock(message,4095)>0) { |
74 | msg+=message; | 74 | msg+=message; |
75 | memset(message,0,4096); | 75 | memset(message,0,4096); |
76 | } | 76 | } |
77 | delete message; | 77 | delete message; |
78 | message = (char*)malloc(msg.length()+1*sizeof(char)); | 78 | message = (char*)malloc(msg.length()+1*sizeof(char)); |
79 | memset(message,0,msg.length()+1); | 79 | memset(message,0,msg.length()+1); |
80 | memcpy(message,msg.latin1(),msg.length()); | 80 | memcpy(message,msg.latin1(),msg.length()); |
81 | /* transform to libetpan stuff */ | 81 | /* transform to libetpan stuff */ |
82 | mailmsg = mailmessage_new(); | 82 | mailmsg = mailmessage_new(); |
83 | mailmessage_init(mailmsg, NULL, data_message_driver, 0, strlen(message)); | 83 | mailmessage_init(mailmsg, NULL, data_message_driver, 0, strlen(message)); |
84 | generic_message_t * msg_data; | 84 | generic_message_t * msg_data; |
85 | msg_data = (generic_message_t *)mailmsg->msg_data; | 85 | msg_data = (generic_message_t *)mailmsg->msg_data; |
86 | msg_data->msg_fetched = 1; | 86 | msg_data->msg_fetched = 1; |
87 | msg_data->msg_message = message; | 87 | msg_data->msg_message = message; |
88 | msg_data->msg_length = strlen(message); | 88 | msg_data->msg_length = strlen(message); |
89 | } | 89 | } |
90 | body = parseMail(mailmsg); | 90 | body = parseMail(mailmsg); |
91 | 91 | ||
92 | /* clean up */ | 92 | /* clean up */ |
93 | if (mailmsg) | 93 | if (mailmsg) |
94 | mailmessage_free(mailmsg); | 94 | mailmessage_free(mailmsg); |
95 | if (message) | 95 | if (message) |
96 | free(message); | 96 | free(message); |
97 | 97 | ||
98 | return body; | 98 | return body; |
99 | } | 99 | } |
100 | 100 | ||
101 | 101 | ||
102 | void NNTPwrapper::listMessages(const QString & which, QValueList<Opie::Core::OSmartPointer<RecMail> > &target, int maxSizeInKb) | 102 | void NNTPwrapper::listMessages(const QString & which, QValueList<Opie::Core::OSmartPointer<RecMail> > &target, int maxSizeInKb) |
103 | { | 103 | { |
104 | login(); | 104 | login(); |
105 | if (!m_nntp) | 105 | if (!m_nntp) |
106 | return; | 106 | return; |
107 | uint32_t res_messages,res_recent,res_unseen; | 107 | uint32_t res_messages,res_recent,res_unseen; |
108 | mailsession_status_folder(m_nntp->sto_session,(char*)which.latin1(),&res_messages,&res_recent,&res_unseen); | 108 | mailsession_status_folder(m_nntp->sto_session,(char*)which.latin1(),&res_messages,&res_recent,&res_unseen); |
109 | parseList(target,m_nntp->sto_session,which,true, maxSizeInKb); | 109 | parseList(target,m_nntp->sto_session,which,true, maxSizeInKb); |
110 | } | 110 | } |
111 | 111 | ||
112 | void NNTPwrapper::login() | 112 | void NNTPwrapper::login() |
113 | { | 113 | { |
114 | if (account->getOffline()) | 114 | if (account->getOffline()) |
115 | return; | 115 | return; |
116 | /* we'll hold the line */ | 116 | /* we'll hold the line */ |
117 | if ( m_nntp != NULL ) | 117 | if ( m_nntp != NULL ) |
118 | return; | 118 | return; |
119 | 119 | ||
120 | const char *server, *user, *pass; | 120 | QString server; |
121 | QString User,Pass; | 121 | QString User,Pass; |
122 | uint16_t port; | 122 | uint16_t port; |
123 | int err = NEWSNNTP_NO_ERROR; | 123 | int err = NEWSNNTP_NO_ERROR; |
124 | 124 | ||
125 | server = account->getServer().latin1(); | 125 | server = account->getServer(); |
126 | port = account->getPort().toUInt(); | 126 | port = account->getPort().toUInt(); |
127 | 127 | ||
128 | user = pass = 0; | ||
129 | |||
130 | if ( ( account->getUser().isEmpty() || account->getPassword().isEmpty() ) && account->getLogin() ) { | 128 | if ( ( account->getUser().isEmpty() || account->getPassword().isEmpty() ) && account->getLogin() ) { |
131 | LoginDialog login( account->getUser(), account->getPassword(), NULL, 0, true ); | 129 | LoginDialog login( account->getUser(), account->getPassword(), NULL, 0, true ); |
132 | login.show(); | 130 | login.show(); |
133 | if ( QDialog::Accepted == login.exec() ) { | 131 | if ( QDialog::Accepted == login.exec() ) { |
134 | // ok | 132 | // ok |
135 | User = login.getUser().latin1(); | 133 | User = login.getUser(); |
136 | Pass = login.getPassword().latin1(); | 134 | Pass = login.getPassword(); |
137 | } else { | 135 | } else { |
138 | // cancel | 136 | // cancel |
139 | ; // << "NNTP: Login canceled" << oendl; | 137 | ; // << "NNTP: Login canceled" << oendl; |
140 | return; | 138 | return; |
141 | } | 139 | } |
142 | } else { | 140 | } else { |
143 | User = account->getUser().latin1(); | 141 | User = account->getUser(); |
144 | Pass = account->getPassword().latin1(); | 142 | Pass = account->getPassword(); |
145 | } | 143 | } |
146 | 144 | ||
147 | if (User.isEmpty()) { | ||
148 | user=0; | ||
149 | pass = 0; | ||
150 | } else { | ||
151 | user=User.latin1(); | ||
152 | pass=Pass.latin1(); | ||
153 | } | ||
154 | // bool ssl = account->getSSL(); | 145 | // bool ssl = account->getSSL(); |
155 | 146 | ||
156 | m_nntp=mailstorage_new(NULL); | 147 | m_nntp=mailstorage_new(NULL); |
157 | 148 | ||
158 | int conntypeset = account->ConnectionType(); | 149 | int conntypeset = account->ConnectionType(); |
159 | int conntype = 0; | 150 | int conntype = 0; |
160 | if ( conntypeset == 3 ) { | 151 | if ( conntypeset == 3 ) { |
161 | conntype = CONNECTION_TYPE_COMMAND; | 152 | conntype = CONNECTION_TYPE_COMMAND; |
162 | } else if ( conntypeset == 2 ) { | 153 | } else if ( conntypeset == 2 ) { |
163 | conntype = CONNECTION_TYPE_TLS; | 154 | conntype = CONNECTION_TYPE_TLS; |
164 | } else if ( conntypeset == 1 ) { | 155 | } else if ( conntypeset == 1 ) { |
165 | conntype = CONNECTION_TYPE_STARTTLS; | 156 | conntype = CONNECTION_TYPE_STARTTLS; |
166 | } else if ( conntypeset == 0 ) { | 157 | } else if ( conntypeset == 0 ) { |
167 | conntype = CONNECTION_TYPE_TRY_STARTTLS; | 158 | conntype = CONNECTION_TYPE_TRY_STARTTLS; |
168 | } | 159 | } |
169 | 160 | ||
170 | nntp_mailstorage_init(m_nntp,(char*)server, port, NULL, CONNECTION_TYPE_PLAIN, NNTP_AUTH_TYPE_PLAIN, | 161 | nntp_mailstorage_init(m_nntp,(char*)server.latin1(), port, NULL, CONNECTION_TYPE_PLAIN, NNTP_AUTH_TYPE_PLAIN, |
171 | (char*)user,(char*)pass,0,0,0); | 162 | (char*)User.latin1(),(char*)Pass.latin1(),0,0,0); |
172 | 163 | ||
173 | err = mailstorage_connect( m_nntp ); | 164 | err = mailstorage_connect( m_nntp ); |
174 | 165 | ||
175 | if (err != NEWSNNTP_NO_ERROR) { | 166 | if (err != NEWSNNTP_NO_ERROR) { |
176 | ; // << QString( "FEHLERNUMMER %1" ).arg( err ) << oendl; | 167 | ; // << QString( "FEHLERNUMMER %1" ).arg( err ) << oendl; |
177 | // Global::statusMessage(tr("Error initializing folder")); | 168 | // Global::statusMessage(tr("Error initializing folder")); |
178 | mailstorage_free(m_nntp); | 169 | mailstorage_free(m_nntp); |
179 | m_nntp = 0; | 170 | m_nntp = 0; |
180 | 171 | ||
181 | } else { | 172 | } else { |
182 | mailsession * session = m_nntp->sto_session; | 173 | mailsession * session = m_nntp->sto_session; |
183 | newsnntp * news = ( ( nntp_session_state_data * )session->sess_data )->nntp_session; | 174 | newsnntp * news = ( ( nntp_session_state_data * )session->sess_data )->nntp_session; |
184 | news->nntp_progr_fun = &nntp_progress; | 175 | news->nntp_progr_fun = &nntp_progress; |
185 | } | 176 | } |
186 | 177 | ||
187 | } | 178 | } |
188 | 179 | ||
189 | void NNTPwrapper::logout() | 180 | void NNTPwrapper::logout() |
190 | { | 181 | { |
191 | int err = NEWSNNTP_NO_ERROR; | 182 | int err = NEWSNNTP_NO_ERROR; |
192 | if ( m_nntp == NULL ) | 183 | if ( m_nntp == NULL ) |
193 | return; | 184 | return; |
194 | mailstorage_free(m_nntp); | 185 | mailstorage_free(m_nntp); |
195 | m_nntp = 0; | 186 | m_nntp = 0; |
196 | } | 187 | } |
197 | 188 | ||
198 | QValueList<Opie::Core::OSmartPointer<Folder> >* NNTPwrapper::listFolders() { | 189 | QValueList<Opie::Core::OSmartPointer<Folder> >* NNTPwrapper::listFolders() { |
199 | 190 | ||
200 | QValueList<Opie::Core::OSmartPointer<Folder> >* folders = new QValueList<Opie::Core::OSmartPointer<Folder> >(); | 191 | QValueList<Opie::Core::OSmartPointer<Folder> >* folders = new QValueList<Opie::Core::OSmartPointer<Folder> >(); |
201 | QStringList groups; | 192 | QStringList groups; |
202 | if (account) { | 193 | if (account) { |
203 | groups = account->getGroups(); | 194 | groups = account->getGroups(); |
204 | } | 195 | } |
205 | for ( QStringList::Iterator it = groups.begin(); it != groups.end(); ++it ) { | 196 | for ( QStringList::Iterator it = groups.begin(); it != groups.end(); ++it ) { |
206 | folders->append(new Folder((*it),".")); | 197 | folders->append(new Folder((*it),".")); |
207 | } | 198 | } |
208 | return folders; | 199 | return folders; |
209 | } | 200 | } |
210 | 201 | ||
211 | /* we made this method in raw nntp access of etpan and not via generic interface | 202 | /* we made this method in raw nntp access of etpan and not via generic interface |
212 | * 'cause in that case there will be doubled copy operations. eg. the etpan would | 203 | * 'cause in that case there will be doubled copy operations. eg. the etpan would |
213 | * copy that stuff into its own structures and we must copy it into useable c++ | 204 | * copy that stuff into its own structures and we must copy it into useable c++ |
214 | * structures for our frontend. this would not make sense, so it is better to reimplement | 205 | * structures for our frontend. this would not make sense, so it is better to reimplement |
215 | * the stuff from generic interface of etpan but copy it direct to qt classes. | 206 | * the stuff from generic interface of etpan but copy it direct to qt classes. |
216 | */ | 207 | */ |
217 | QStringList NNTPwrapper::listAllNewsgroups(const QString&mask) { | 208 | QStringList NNTPwrapper::listAllNewsgroups(const QString&mask) { |
218 | login(); | 209 | login(); |
219 | QStringList res; | 210 | QStringList res; |
diff --git a/kmicromail/libmailwrapper/pop3wrapper.cpp b/kmicromail/libmailwrapper/pop3wrapper.cpp index 0e6612c..f430121 100644 --- a/kmicromail/libmailwrapper/pop3wrapper.cpp +++ b/kmicromail/libmailwrapper/pop3wrapper.cpp | |||
@@ -73,141 +73,139 @@ RecBodyP POP3wrapper::fetchBody( const RecMailP &mail ) { | |||
73 | memset(message,0,4096); | 73 | memset(message,0,4096); |
74 | while (msg_cache.readBlock(message,4095)>0) { | 74 | while (msg_cache.readBlock(message,4095)>0) { |
75 | msg+=message; | 75 | msg+=message; |
76 | memset(message,0,4096); | 76 | memset(message,0,4096); |
77 | } | 77 | } |
78 | delete message; | 78 | delete message; |
79 | message = (char*)malloc(msg.length()+1*sizeof(char)); | 79 | message = (char*)malloc(msg.length()+1*sizeof(char)); |
80 | memset(message,0,msg.length()+1); | 80 | memset(message,0,msg.length()+1); |
81 | memcpy(message,msg.latin1(),msg.length()); | 81 | memcpy(message,msg.latin1(),msg.length()); |
82 | /* transform to libetpan stuff */ | 82 | /* transform to libetpan stuff */ |
83 | mailmsg = mailmessage_new(); | 83 | mailmsg = mailmessage_new(); |
84 | mailmessage_init(mailmsg, NULL, data_message_driver, 0, strlen(message)); | 84 | mailmessage_init(mailmsg, NULL, data_message_driver, 0, strlen(message)); |
85 | generic_message_t * msg_data; | 85 | generic_message_t * msg_data; |
86 | msg_data = (generic_message_t *)mailmsg->msg_data; | 86 | msg_data = (generic_message_t *)mailmsg->msg_data; |
87 | msg_data->msg_fetched = 1; | 87 | msg_data->msg_fetched = 1; |
88 | msg_data->msg_message = message; | 88 | msg_data->msg_message = message; |
89 | msg_data->msg_length = strlen(message); | 89 | msg_data->msg_length = strlen(message); |
90 | } | 90 | } |
91 | body = parseMail(mailmsg); | 91 | body = parseMail(mailmsg); |
92 | 92 | ||
93 | /* clean up */ | 93 | /* clean up */ |
94 | if (mailmsg) | 94 | if (mailmsg) |
95 | mailmessage_free(mailmsg); | 95 | mailmessage_free(mailmsg); |
96 | if (message) | 96 | if (message) |
97 | free(message); | 97 | free(message); |
98 | 98 | ||
99 | return body; | 99 | return body; |
100 | } | 100 | } |
101 | 101 | ||
102 | void POP3wrapper::listMessages(const QString &, QValueList<Opie::Core::OSmartPointer<RecMail> > &target, int maxSizeInKb ) | 102 | void POP3wrapper::listMessages(const QString &, QValueList<Opie::Core::OSmartPointer<RecMail> > &target, int maxSizeInKb ) |
103 | { | 103 | { |
104 | login(); | 104 | login(); |
105 | if (!m_pop3) | 105 | if (!m_pop3) |
106 | return; | 106 | return; |
107 | uint32_t res_messages,res_recent,res_unseen; | 107 | uint32_t res_messages,res_recent,res_unseen; |
108 | mailsession_status_folder(m_pop3->sto_session,"INBOX",&res_messages,&res_recent,&res_unseen); | 108 | mailsession_status_folder(m_pop3->sto_session,"INBOX",&res_messages,&res_recent,&res_unseen); |
109 | parseList(target,m_pop3->sto_session,"INBOX", false, maxSizeInKb); | 109 | parseList(target,m_pop3->sto_session,"INBOX", false, maxSizeInKb); |
110 | Global::statusMessage( tr("Mailbox contains %1 mail(s)").arg(res_messages)); | 110 | Global::statusMessage( tr("Mailbox contains %1 mail(s)").arg(res_messages)); |
111 | } | 111 | } |
112 | 112 | ||
113 | void POP3wrapper::login() | 113 | void POP3wrapper::login() |
114 | { | 114 | { |
115 | if (account->getOffline()) | 115 | if (account->getOffline()) |
116 | return; | 116 | return; |
117 | /* we'll hold the line */ | 117 | /* we'll hold the line */ |
118 | if ( m_pop3 != NULL ) | 118 | if ( m_pop3 != NULL ) |
119 | return; | 119 | return; |
120 | 120 | ||
121 | const char *server, *user, *pass; | 121 | QString server,user, pass; |
122 | uint16_t port; | 122 | uint16_t port; |
123 | int err = MAILPOP3_NO_ERROR; | 123 | int err = MAILPOP3_NO_ERROR; |
124 | 124 | ||
125 | server = account->getServer().latin1(); | 125 | server = account->getServer().latin1(); |
126 | port = account->getPort().toUInt(); | 126 | port = account->getPort().toUInt(); |
127 | 127 | ||
128 | if ( account->getUser().isEmpty() || account->getPassword().isEmpty() ) { | 128 | if ( account->getUser().isEmpty() || account->getPassword().isEmpty() ) { |
129 | LoginDialog login( account->getUser(), account->getPassword(), NULL, 0, true ); | 129 | LoginDialog login( account->getUser(), account->getPassword(), NULL, 0, true ); |
130 | login.show(); | 130 | login.show(); |
131 | if ( QDialog::Accepted == login.exec() ) { | 131 | if ( QDialog::Accepted == login.exec() ) { |
132 | // ok | 132 | // ok |
133 | user = login.getUser().latin1(); | 133 | qDebug("ok "); |
134 | pass = login.getPassword().latin1(); | 134 | user = login.getUser(); |
135 | pass = login.getPassword(); | ||
135 | } else { | 136 | } else { |
136 | // cancel | 137 | // cancel |
137 | ; // odebug << "POP3: Login canceled" << oendl; | 138 | ; // odebug << "POP3: Login canceled" << oendl; |
138 | return; | 139 | return; |
139 | } | 140 | } |
140 | } else { | 141 | } else { |
141 | user = account->getUser().latin1(); | 142 | user = account->getUser(); |
142 | pass = account->getPassword().latin1(); | 143 | pass = account->getPassword(); |
143 | } | 144 | } |
144 | |||
145 | // bool ssl = account->getSSL(); | 145 | // bool ssl = account->getSSL(); |
146 | 146 | ||
147 | m_pop3=mailstorage_new(NULL); | 147 | m_pop3=mailstorage_new(NULL); |
148 | |||
149 | int conntypeset = account->ConnectionType(); | 148 | int conntypeset = account->ConnectionType(); |
150 | int conntype = 0; | 149 | int conntype = 0; |
151 | if ( conntypeset == 3 ) { | 150 | if ( conntypeset == 3 ) { |
152 | conntype = CONNECTION_TYPE_COMMAND; | 151 | conntype = CONNECTION_TYPE_COMMAND; |
153 | } else if ( conntypeset == 2 ) { | 152 | } else if ( conntypeset == 2 ) { |
154 | conntype = CONNECTION_TYPE_TLS; | 153 | conntype = CONNECTION_TYPE_TLS; |
155 | } else if ( conntypeset == 1 ) { | 154 | } else if ( conntypeset == 1 ) { |
156 | conntype = CONNECTION_TYPE_STARTTLS; | 155 | conntype = CONNECTION_TYPE_STARTTLS; |
157 | } else if ( conntypeset == 0 ) { | 156 | } else if ( conntypeset == 0 ) { |
158 | conntype = CONNECTION_TYPE_TRY_STARTTLS; | 157 | conntype = CONNECTION_TYPE_TRY_STARTTLS; |
159 | } | 158 | } |
160 | 159 | ||
161 | //(ssl?CONNECTION_TYPE_TLS:CONNECTION_TYPE_PLAIN); | 160 | //(ssl?CONNECTION_TYPE_TLS:CONNECTION_TYPE_PLAIN); |
162 | 161 | ||
163 | pop3_mailstorage_init(m_pop3,(char*)server, port, NULL, conntype, POP3_AUTH_TYPE_PLAIN, | 162 | pop3_mailstorage_init(m_pop3,(char*)server.latin1(), port, NULL, conntype, POP3_AUTH_TYPE_PLAIN, |
164 | (char*)user,(char*)pass,0,0,0); | 163 | (char*)user.latin1(),(char*)pass.latin1(),0,0,0); |
165 | |||
166 | 164 | ||
167 | err = mailstorage_connect(m_pop3); | 165 | err = mailstorage_connect(m_pop3); |
168 | if (err != MAIL_NO_ERROR) { | 166 | if (err != MAIL_NO_ERROR) { |
169 | ; // odebug << QString( "FEHLERNUMMER %1" ).arg( err ) << oendl; | 167 | ; // odebug << QString( "FEHLERNUMMER %1" ).arg( err ) << oendl; |
170 | Global::statusMessage(tr("Error initializing folder")); | 168 | Global::statusMessage(tr("Error initializing folder")); |
171 | mailstorage_free(m_pop3); | 169 | mailstorage_free(m_pop3); |
172 | m_pop3 = 0; | 170 | m_pop3 = 0; |
173 | } else { | 171 | } else { |
174 | mailsession * session = m_pop3->sto_session; | 172 | mailsession * session = m_pop3->sto_session; |
175 | mailpop3 * mail = ( ( pop3_session_state_data * )session->sess_data )->pop3_session; | 173 | mailpop3 * mail = ( ( pop3_session_state_data * )session->sess_data )->pop3_session; |
176 | if (mail) { | 174 | if (mail) { |
177 | mail->pop3_progr_fun = &pop3_progress; | 175 | mail->pop3_progr_fun = &pop3_progress; |
178 | } | 176 | } |
179 | } | 177 | } |
180 | } | 178 | } |
181 | 179 | ||
182 | void POP3wrapper::logout() | 180 | void POP3wrapper::logout() |
183 | { | 181 | { |
184 | if ( m_pop3 == NULL ) | 182 | if ( m_pop3 == NULL ) |
185 | return; | 183 | return; |
186 | mailstorage_free(m_pop3); | 184 | mailstorage_free(m_pop3); |
187 | m_pop3 = 0; | 185 | m_pop3 = 0; |
188 | } | 186 | } |
189 | 187 | ||
190 | 188 | ||
191 | QValueList<Opie::Core::OSmartPointer<Folder> >* POP3wrapper::listFolders() { | 189 | QValueList<Opie::Core::OSmartPointer<Folder> >* POP3wrapper::listFolders() { |
192 | QValueList<Opie::Core::OSmartPointer<Folder> >* folders = new QValueList<FolderP>(); | 190 | QValueList<Opie::Core::OSmartPointer<Folder> >* folders = new QValueList<FolderP>(); |
193 | FolderP inb=new Folder("INBOX","/"); | 191 | FolderP inb=new Folder("INBOX","/"); |
194 | folders->append(inb); | 192 | folders->append(inb); |
195 | return folders; | 193 | return folders; |
196 | } | 194 | } |
197 | 195 | ||
198 | void POP3wrapper::deleteMailList(const QValueList<RecMailP>&target) | 196 | void POP3wrapper::deleteMailList(const QValueList<RecMailP>&target) |
199 | { | 197 | { |
200 | login(); | 198 | login(); |
201 | if (!m_pop3) | 199 | if (!m_pop3) |
202 | return; | 200 | return; |
203 | int iii = 0; | 201 | int iii = 0; |
204 | int count = target.count(); | 202 | int count = target.count(); |
205 | QProgressBar bar( count,0 ); | 203 | QProgressBar bar( count,0 ); |
206 | bar.setCaption (("Removing mails - close to abort!") ); | 204 | bar.setCaption (("Removing mails - close to abort!") ); |
207 | int w = 300; | 205 | int w = 300; |
208 | if ( QApplication::desktop()->width() < 320 ) | 206 | if ( QApplication::desktop()->width() < 320 ) |
209 | w = 220; | 207 | w = 220; |
210 | int h = bar.sizeHint().height() ; | 208 | int h = bar.sizeHint().height() ; |
211 | int dw = QApplication::desktop()->width(); | 209 | int dw = QApplication::desktop()->width(); |
212 | int dh = QApplication::desktop()->height(); | 210 | int dh = QApplication::desktop()->height(); |
213 | bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); | 211 | bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); |
diff --git a/kmicromail/libmailwrapper/smtpwrapper.cpp b/kmicromail/libmailwrapper/smtpwrapper.cpp index 6a1b505..d5a528c 100644 --- a/kmicromail/libmailwrapper/smtpwrapper.cpp +++ b/kmicromail/libmailwrapper/smtpwrapper.cpp | |||
@@ -137,185 +137,184 @@ bool SMTPwrapper::smtpSend( mailmime *mail,bool later) { | |||
137 | bool result = smtpSend(from,rcpts,data,size); | 137 | bool result = smtpSend(from,rcpts,data,size); |
138 | if (data) { | 138 | if (data) { |
139 | free(data); | 139 | free(data); |
140 | } | 140 | } |
141 | if (from) { | 141 | if (from) { |
142 | free(from); | 142 | free(from); |
143 | } | 143 | } |
144 | if (rcpts) | 144 | if (rcpts) |
145 | smtp_address_list_free( rcpts ); | 145 | smtp_address_list_free( rcpts ); |
146 | return result; | 146 | return result; |
147 | } | 147 | } |
148 | 148 | ||
149 | void SMTPwrapper::storeFailedMail(const char*data,unsigned int size, const char*failuremessage) | 149 | void SMTPwrapper::storeFailedMail(const char*data,unsigned int size, const char*failuremessage) |
150 | { | 150 | { |
151 | if (data) { | 151 | if (data) { |
152 | storeMail(data,size,"Sendfailed"); | 152 | storeMail(data,size,"Sendfailed"); |
153 | } | 153 | } |
154 | if (failuremessage) { | 154 | if (failuremessage) { |
155 | QMessageBox::critical(0,tr("Error sending mail"), | 155 | QMessageBox::critical(0,tr("Error sending mail"), |
156 | tr("<center>%1</center>").arg(failuremessage)); | 156 | tr("<center>%1</center>").arg(failuremessage)); |
157 | } | 157 | } |
158 | } | 158 | } |
159 | 159 | ||
160 | int SMTPwrapper::start_smtp_tls() | 160 | int SMTPwrapper::start_smtp_tls() |
161 | { | 161 | { |
162 | if (!m_smtp) { | 162 | if (!m_smtp) { |
163 | return MAILSMTP_ERROR_IN_PROCESSING; | 163 | return MAILSMTP_ERROR_IN_PROCESSING; |
164 | } | 164 | } |
165 | int err = mailesmtp_starttls(m_smtp); | 165 | int err = mailesmtp_starttls(m_smtp); |
166 | if (err != MAILSMTP_NO_ERROR) return err; | 166 | if (err != MAILSMTP_NO_ERROR) return err; |
167 | mailstream_low * low; | 167 | mailstream_low * low; |
168 | mailstream_low * new_low; | 168 | mailstream_low * new_low; |
169 | low = mailstream_get_low(m_smtp->stream); | 169 | low = mailstream_get_low(m_smtp->stream); |
170 | if (!low) { | 170 | if (!low) { |
171 | return MAILSMTP_ERROR_IN_PROCESSING; | 171 | return MAILSMTP_ERROR_IN_PROCESSING; |
172 | } | 172 | } |
173 | int fd = mailstream_low_get_fd(low); | 173 | int fd = mailstream_low_get_fd(low); |
174 | if (fd > -1 && (new_low = mailstream_low_ssl_open(fd))!=0) { | 174 | if (fd > -1 && (new_low = mailstream_low_ssl_open(fd))!=0) { |
175 | mailstream_low_free(low); | 175 | mailstream_low_free(low); |
176 | mailstream_set_low(m_smtp->stream, new_low); | 176 | mailstream_set_low(m_smtp->stream, new_low); |
177 | } else { | 177 | } else { |
178 | return MAILSMTP_ERROR_IN_PROCESSING; | 178 | return MAILSMTP_ERROR_IN_PROCESSING; |
179 | } | 179 | } |
180 | return err; | 180 | return err; |
181 | } | 181 | } |
182 | 182 | ||
183 | void SMTPwrapper::connect_server() | 183 | void SMTPwrapper::connect_server() |
184 | { | 184 | { |
185 | const char *server, *user, *pass; | 185 | QString server, user, pass; |
186 | bool ssl; | 186 | bool ssl; |
187 | uint16_t port; | 187 | uint16_t port; |
188 | ssl = false; | 188 | ssl = false; |
189 | bool try_tls = true; | 189 | bool try_tls = true; |
190 | bool force_tls=false; | 190 | bool force_tls=false; |
191 | server = user = pass = 0; | ||
192 | QString failuretext = ""; | 191 | QString failuretext = ""; |
193 | 192 | ||
194 | if (m_smtp || !m_SmtpAccount) { | 193 | if (m_smtp || !m_SmtpAccount) { |
195 | return; | 194 | return; |
196 | } | 195 | } |
197 | server = m_SmtpAccount->getServer().latin1(); | 196 | server = m_SmtpAccount->getServer(); |
198 | if ( m_SmtpAccount->ConnectionType() == 2 ) { | 197 | if ( m_SmtpAccount->ConnectionType() == 2 ) { |
199 | ssl = true; | 198 | ssl = true; |
200 | try_tls = false; | 199 | try_tls = false; |
201 | } else if (m_SmtpAccount->ConnectionType() == 1) { | 200 | } else if (m_SmtpAccount->ConnectionType() == 1) { |
202 | force_tls = true; | 201 | force_tls = true; |
203 | } | 202 | } |
204 | int result = 1; | 203 | int result = 1; |
205 | port = m_SmtpAccount->getPort().toUInt(); | 204 | port = m_SmtpAccount->getPort().toUInt(); |
206 | 205 | ||
207 | m_smtp = mailsmtp_new( 20, &progress ); | 206 | m_smtp = mailsmtp_new( 20, &progress ); |
208 | if ( m_smtp == NULL ) { | 207 | if ( m_smtp == NULL ) { |
209 | /* no failure message cause this happens when problems with memory - than we | 208 | /* no failure message cause this happens when problems with memory - than we |
210 | we can not display any messagebox */ | 209 | we can not display any messagebox */ |
211 | return; | 210 | return; |
212 | } | 211 | } |
213 | 212 | ||
214 | int err = MAILSMTP_NO_ERROR; | 213 | int err = MAILSMTP_NO_ERROR; |
215 | ; // odebug << "Servername " << server << " at port " << port << "" << oendl; | 214 | ; // odebug << "Servername " << server << " at port " << port << "" << oendl; |
216 | if ( ssl ) { | 215 | if ( ssl ) { |
217 | ; // odebug << "SSL session" << oendl; | 216 | ; // odebug << "SSL session" << oendl; |
218 | err = mailsmtp_ssl_connect( m_smtp, server, port ); | 217 | err = mailsmtp_ssl_connect( m_smtp, server.latin1(), port ); |
219 | } else { | 218 | } else { |
220 | ; // odebug << "No SSL session" << oendl; | 219 | ; // odebug << "No SSL session" << oendl; |
221 | err = mailsmtp_socket_connect( m_smtp, server, port ); | 220 | err = mailsmtp_socket_connect( m_smtp, server.latin1(), port ); |
222 | } | 221 | } |
223 | if ( err != MAILSMTP_NO_ERROR ) { | 222 | if ( err != MAILSMTP_NO_ERROR ) { |
224 | ; // odebug << "Error init connection" << oendl; | 223 | ; // odebug << "Error init connection" << oendl; |
225 | failuretext = tr("Error init SMTP connection: %1").arg(mailsmtpError(err)); | 224 | failuretext = tr("Error init SMTP connection: %1").arg(mailsmtpError(err)); |
226 | result = 0; | 225 | result = 0; |
227 | } | 226 | } |
228 | 227 | ||
229 | /* switch to tls after init 'cause there it will send the ehlo */ | 228 | /* switch to tls after init 'cause there it will send the ehlo */ |
230 | if (result) { | 229 | if (result) { |
231 | err = mailsmtp_init( m_smtp ); | 230 | err = mailsmtp_init( m_smtp ); |
232 | if (err != MAILSMTP_NO_ERROR) { | 231 | if (err != MAILSMTP_NO_ERROR) { |
233 | result = 0; | 232 | result = 0; |
234 | failuretext = tr("Error init SMTP connection: %1").arg(mailsmtpError(err)); | 233 | failuretext = tr("Error init SMTP connection: %1").arg(mailsmtpError(err)); |
235 | } | 234 | } |
236 | } | 235 | } |
237 | 236 | ||
238 | if (try_tls) { | 237 | if (try_tls) { |
239 | err = start_smtp_tls(); | 238 | err = start_smtp_tls(); |
240 | if (err != MAILSMTP_NO_ERROR) { | 239 | if (err != MAILSMTP_NO_ERROR) { |
241 | try_tls = false; | 240 | try_tls = false; |
242 | } else { | 241 | } else { |
243 | err = mailesmtp_ehlo(m_smtp); | 242 | err = mailesmtp_ehlo(m_smtp); |
244 | } | 243 | } |
245 | } | 244 | } |
246 | 245 | ||
247 | if (!try_tls && force_tls) { | 246 | if (!try_tls && force_tls) { |
248 | result = 0; | 247 | result = 0; |
249 | failuretext = tr("Error init SMTP tls: %1").arg(mailsmtpError(err)); | 248 | failuretext = tr("Error init SMTP tls: %1").arg(mailsmtpError(err)); |
250 | } | 249 | } |
251 | 250 | ||
252 | if (result==1 && m_SmtpAccount->getLogin() ) { | 251 | if (result==1 && m_SmtpAccount->getLogin() ) { |
253 | ; // odebug << "smtp with auth" << oendl; | 252 | ; // odebug << "smtp with auth" << oendl; |
254 | if ( m_SmtpAccount->getUser().isEmpty() || m_SmtpAccount->getPassword().isEmpty() ) { | 253 | if ( m_SmtpAccount->getUser().isEmpty() || m_SmtpAccount->getPassword().isEmpty() ) { |
255 | // get'em | 254 | // get'em |
256 | LoginDialog login( m_SmtpAccount->getUser(), | 255 | LoginDialog login( m_SmtpAccount->getUser(), |
257 | m_SmtpAccount->getPassword(), NULL, 0, true ); | 256 | m_SmtpAccount->getPassword(), NULL, 0, true ); |
258 | login.show(); | 257 | login.show(); |
259 | if ( QDialog::Accepted == login.exec() ) { | 258 | if ( QDialog::Accepted == login.exec() ) { |
260 | // ok | 259 | // ok |
261 | user = login.getUser().latin1(); | 260 | user = login.getUser(); |
262 | pass = login.getPassword().latin1(); | 261 | pass = login.getPassword(); |
263 | } else { | 262 | } else { |
264 | result = 0; | 263 | result = 0; |
265 | failuretext=tr("Login aborted - storing mail to localfolder"); | 264 | failuretext=tr("Login aborted - storing mail to localfolder"); |
266 | } | 265 | } |
267 | } else { | 266 | } else { |
268 | user = m_SmtpAccount->getUser().latin1(); | 267 | user = m_SmtpAccount->getUser(); |
269 | pass = m_SmtpAccount->getPassword().latin1(); | 268 | pass = m_SmtpAccount->getPassword(); |
270 | } | 269 | } |
271 | ; // odebug << "session->auth: " << m_smtp->auth << "" << oendl; | 270 | ; // odebug << "session->auth: " << m_smtp->auth << "" << oendl; |
272 | if (result) { | 271 | if (result) { |
273 | err = mailsmtp_auth( m_smtp, (char*)user, (char*)pass ); | 272 | err = mailsmtp_auth( m_smtp, (char*)user.latin1(), (char*)pass.latin1() ); |
274 | if ( err == MAILSMTP_NO_ERROR ) { | 273 | if ( err == MAILSMTP_NO_ERROR ) { |
275 | ; // odebug << "auth ok" << oendl; | 274 | ; // odebug << "auth ok" << oendl; |
276 | } else { | 275 | } else { |
277 | failuretext = tr("Authentification failed"); | 276 | failuretext = tr("Authentification failed"); |
278 | result = 0; | 277 | result = 0; |
279 | } | 278 | } |
280 | } | 279 | } |
281 | } | 280 | } |
282 | } | 281 | } |
283 | 282 | ||
284 | void SMTPwrapper::disc_server() | 283 | void SMTPwrapper::disc_server() |
285 | { | 284 | { |
286 | if (m_smtp) { | 285 | if (m_smtp) { |
287 | mailsmtp_quit( m_smtp ); | 286 | mailsmtp_quit( m_smtp ); |
288 | mailsmtp_free( m_smtp ); | 287 | mailsmtp_free( m_smtp ); |
289 | m_smtp = 0; | 288 | m_smtp = 0; |
290 | } | 289 | } |
291 | } | 290 | } |
292 | 291 | ||
293 | int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size ) | 292 | int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size ) |
294 | { | 293 | { |
295 | int err,result; | 294 | int err,result; |
296 | QString failuretext = ""; | 295 | QString failuretext = ""; |
297 | 296 | ||
298 | connect_server(); | 297 | connect_server(); |
299 | 298 | ||
300 | result = 1; | 299 | result = 1; |
301 | if (m_smtp) { | 300 | if (m_smtp) { |
302 | err = mailsmtp_send( m_smtp, from, rcpts, data, size ); | 301 | err = mailsmtp_send( m_smtp, from, rcpts, data, size ); |
303 | if ( err != MAILSMTP_NO_ERROR ) { | 302 | if ( err != MAILSMTP_NO_ERROR ) { |
304 | failuretext=tr("Error sending mail: %1").arg(mailsmtpError(err)); | 303 | failuretext=tr("Error sending mail: %1").arg(mailsmtpError(err)); |
305 | result = 0; | 304 | result = 0; |
306 | } | 305 | } |
307 | } else { | 306 | } else { |
308 | result = 0; | 307 | result = 0; |
309 | } | 308 | } |
310 | 309 | ||
311 | if (!result) { | 310 | if (!result) { |
312 | storeFailedMail(data,size,failuretext); | 311 | storeFailedMail(data,size,failuretext); |
313 | } else { | 312 | } else { |
314 | ; // odebug << "Mail sent." << oendl; | 313 | ; // odebug << "Mail sent." << oendl; |
315 | storeMail(data,size,"Sent"); | 314 | storeMail(data,size,"Sent"); |
316 | } | 315 | } |
317 | return result; | 316 | return result; |
318 | } | 317 | } |
319 | 318 | ||
320 | bool SMTPwrapper::sendMail(const Opie::Core::OSmartPointer<Mail>&mail,bool later ) | 319 | bool SMTPwrapper::sendMail(const Opie::Core::OSmartPointer<Mail>&mail,bool later ) |
321 | { | 320 | { |