📄 email_rw.cxx
字号:
// generated by Fast Light User Interface Designer (fluid) version 1.0010
#include "Email_rw.h"
char *format(char *p0, char *p1, char *p2);
int cpmail_content(NEW * mail_cont)
{
sprintf(mail_cont->user, USERNAME);
if (strlen(Mnew_sdp_in->value()) <= 0)
return -1;
else
sprintf(mail_cont->from, "%s", Mnew_sdp_in->value());
if (strlen(Mnew_recp_in->value()) <= 0)
return -1;
else
sprintf(mail_cont->to, "%s", Mnew_recp_in->value());
if (strlen(Mnew_top_in->value()) <= 0)
strcpy(mail_cont->subject, "");
else
sprintf(mail_cont->subject, "%s", Mnew_top_in->value());
if (strlen(Mnew_rep_in->value()) <= 0)
strcpy(mail_cont->cc, "");
else
sprintf(mail_cont->cc, "%s", Mnew_rep_in->value());
if (strlen(Mnew_write_multin->value()) <= 0)
return -1;
else
sprintf(mail_cont->textbody, "%s", Mnew_write_multin->value());
return 1;
}
static void cb_Mold_rep_but(Fl_Button *, void *)
{
char sdp[64], recp[64];
char *p;
int i;
strncpy(sdp, Mold_sdp_in->value(), 64);
p = sdp;
while (*p != '\0') {
if (*p == '<')
break;
p++;
}
if (*p == '<') {
p++;
for (i = 0; *p != '>'; i++) {
recp[i] = *p++;
}
recp[i] = '\0';
}
Mold_read_gp->hide();
Mnew_write_gp->show();
Mnew_sdp_in->value(numset.maddr);
Mnew_sdp_in->redraw();
Mnew_recp_in->value(recp);
Mnew_recp_in->redraw();
Mnew_rep_in->value("");
Mnew_rep_in->redraw();
Mnew_top_in->value("");
Mnew_top_in->redraw();
Mnew_write_multin->value("");
Mnew_write_multin->redraw();
Mnew_del_but->deactivate();
}
static void cb_Mold_del_but(Fl_Button *, void *)
{
switch (com) {
case OLD_MAIL_READ:
delete_mail(newmail_id, oldmail_id, lines, OLD_MAIL_READ);
Mold_read_window->hide();
Mold_read_gp->hide();
Emain_window->show();
if (com == OLD_MAIL_READ)
Mreiv_gp->show();
else if (com == NEW_MAIL_READ) {
rcvsend = SMBOX;
Msend_gp->show();
}
Rm_browser->value(lines);
Rm_browser->redraw();
break;
case NEW_MAIL_READ:
delete_mail(newmail_id, oldmail_id, Sm_browser->value(),
NEW_MAIL_READ);
Mold_read_window->hide();
Mnew_write_gp->hide();
Emain_window->show();
rcvsend = SMBOX;
Msend_gp->show();
Sm_browser->value(Sm_browser->value());
Sm_browser->redraw();
break;
default:
break;
}
}
static void cb_Mold_quit_but(Fl_Button *, void *)
{
Mold_read_window->hide();
Mold_read_gp->hide();
Emain_window->show();
if (com == OLD_MAIL_READ) {
rcvsend = RMBOX;
Mreiv_gp->show();
Rm_browser->value(lines);
Rm_browser->redraw();
} else if (com == NEW_MAIL_READ) {
rcvsend = SMBOX;
Msend_gp->show();
}
}
static void cb_Mold_next_but(Fl_Button *, void *)
{
char *buf;
int email_sum = user_oldmail;
lines++;
buf = (char *) malloc(MAXRCVMAIL);
if ((buf =
read_fromdatabase(buf, lines, RECEIVE, newmail_id,
oldmail_id)) == 0) {
printf("read data from database error!\n");
free(buf);
return;
}
if (Rm_browser->text(lines) != 0) {
Email_reic_show(buf);
} else {
free(buf);
}
Mold_back_but->activate();
if (lines >= email_sum)
Mold_next_but->deactivate();
return;
}
static void cb_Mold_back_but(Fl_Button *, void *)
{
char *buf;
lines--;
buf = (char *) malloc(MAXRCVMAIL);
if ((buf =
read_fromdatabase(buf, lines, RECEIVE, newmail_id,
oldmail_id)) == 0) {
printf("read data from database error!\n");
free(buf);
return;
}
if (lines > 0) {
Email_reic_show(buf);
} else {
free(buf);
}
Mold_next_but->activate();
if (lines == 1)
Mold_back_but->deactivate();
return;
}
static void cb_Mnew_send_but(Fl_Button *, void *)
{
NEW new_send;
Mlist *mimefiles = NULL;
char smtphost[30];;
int smtpport = 25;
int securstyle = 1;
char username[30];
char password[30];
signal(SIGSEGV, func);
strcpy(smtphost, numset.smtp);
strcpy(username, numset.mnum);
strcpy(password, numset.passwd);
if (cpmail_content(&new_send) < 0) {
fl_alert("请填写必要的邮件内容!\n");
return;
}
if (eml_prepare_mail
(smtphost, smtpport, new_send.from, new_send.to, new_send.cc,
new_send.subject, new_send.textbody, mimefiles) != SUCCESS) {
printf("%s\n ", smtpArror());
return;
}
if (securstyle)
if (eml_send_mail_needAuth
(&smtpserver, &mymail, username, password) != SUCCESS) {
printf("%s\n ", smtpArror());
return;
}
if (!securstyle)
if (eml_send_mail_noNeedAuth(&smtpserver, &mymail) != SUCCESS) {
printf("%s\n ", smtpArror());
return;
}
if (Sm_browser->value())
delete_mail(newmail_id, oldmail_id,
Sm_browser->value(), NEW_MAIL_READ);
Mreiv_gp->hide();
Mold_read_window->hide();
Emain_window->show();
rcvsend = SMBOX;
Msend_gp->show();
Msend_gp->redraw();
return;
}
static void cb_Mnew_save_but(Fl_Button *, void *)
{
NEW new_send;
struct new_email *temp;
struct loginfo *buf;
time_t ticks;
int i, n, flag = 0;
int db_num; // total records num;
int current; // current user's records num;
ticks = time(NULL);
temp = (struct new_email *) malloc(MAXNEWMAIL);
if (cpmail_content(&new_send) < 0) {
fl_alert("请填写必要的邮件内容!\n");
return;
}
if ((db_num = get_the_datanum(newmail_id)) == -1) {
printf("get record number error!\n");
return;
}
printf("db number = %d\n", db_num);
if (db_num)
sort_newmail_database(newmail_id);
if (com == MAIL_READ) {
for (i = 0, current = 0; i < db_num; i++) {
db_change_current_pos(newmail_id, i);
n = db_get_current_pos(newmail_id, temp);
printf("Current position is %d\n", n);
if (!strcmp(temp->user, USERNAME)) {
current++;
}
if (current == Sm_browser->value()) {
new_send.mail_line = i;
new_send.mailid = temp->mailid;
printf("%d\n", new_send.mail_line);
n = db_modify_current(newmail_id, &new_send, MAXNEWMAIL);
if (n)
printf("modify success\n");
else
printf("modify failed\n");
Sm_browser->remove(current);
Sm_browser->insert(current, format(new_send.from,
new_send.to,
new_send.subject));
Sm_browser->redraw();
break;
}
}
db_num = db_get_record_number(changelog_id);
buf = (struct loginfo *) malloc(MAXCHLOG);
sort_changelog_database(changelog_id);
for (i = 0; i < db_num; i++) {
db_change_current_pos(changelog_id, db_num);
db_get_current_pos(changelog_id, buf);
if (buf->mailid == temp->mailid) {
flag = 1;
break;
}
}
if (!flag) {
buf->order = db_num;
buf->mailid = temp->mailid;
buf->opid = 1;
strncpy(buf->user, USERNAME, 20);
add_changelog2db(buf, changelog_id);
}
free(buf);
} else {
new_send.mail_line = user_newmail++;
if (add_newmail2db(&new_send, newmail_id) < 0)
printf("database create error\n");
Sm_browser->insert(user_newmail, format(new_send.from,
new_send.to,
new_send.subject));
db_num = db_get_record_number(changelog_id);
buf = (struct loginfo *) malloc(MAXCHLOG);
buf->order = db_num;
buf->mailid = total_mailid++;
buf->opid = 0;
strncpy(buf->user, USERNAME, 20);
add_changelog2db(buf, changelog_id);
free(buf);
}
free(temp);
temp = NULL;
Mreiv_gp->hide();
Mold_read_window->hide();
Emain_window->show();
Msend_gp->show();
Msend_gp->redraw();
}
static void cb_Mnew_del_but(Fl_Button *, void *)
{
delete_mail(newmail_id, oldmail_id, Sm_browser->value(),
NEW_MAIL_READ);
Mold_read_window->hide();
Mnew_write_gp->hide();
Emain_window->show();
rcvsend = SMBOX;
Msend_gp->show();
}
static void cb_Mnew_quit_but(Fl_Button *, void *)
{
Mold_read_window->hide();
Mnew_write_gp->hide();
Emain_window->show();
rcvsend = SMBOX;
Msend_gp->show();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -