首页 文章 精选 留言 我的

精选列表

搜索[客户分析],共10012篇文章
优秀的个人博客,低调大师

简单的邮件客户

运行界面如下: 源代码如下:(本程序使用的是Merak mail server) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 package com.zzk; /** * @author 任文超 * @version 1.0 * */ import java.awt.Color; import java.awt.EventQueue; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class SendMailFrame extends JFrame { private JTextArea ta_text; private JTextField tf_title; private JTextField tf_send; private JTextField tf_receive; private Session session; // 定义Session对象 private String sendHost = "localhost" ; // 定义发送邮件的主机 private String sendProtocol= "smtp" ; // 定义使用的发送协议 public static void main(String args[]) { EventQueue.invokeLater( new Runnable() { public void run() { try { SendMailFrame frame = new SendMailFrame(); frame.init(); frame.setVisible( true ); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame */ public SendMailFrame() { super (); setTitle( "发送邮件窗体" ); getContentPane().setLayout( null ); setBounds( 100 , 100 , 439 , 299 ); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JLabel label = new JLabel(); label.setForeground( new Color( 0 , 0 , 255 )); label.setFont( new Font( "" , Font.BOLD, 22 )); label.setText( "发送电子邮件" ); label.setBounds( 144 , 10 , 185 , 24 ); getContentPane().add(label); final JLabel label_1 = new JLabel(); label_1.setText( "收件人地址:" ); label_1.setBounds( 22 , 42 , 85 , 18 ); getContentPane().add(label_1); tf_receive = new JTextField(); tf_receive.setBounds( 113 , 40 , 287 , 22 ); getContentPane().add(tf_receive); final JLabel label_2 = new JLabel(); label_2.setText( "发件人地址:" ); label_2.setBounds( 22 , 68 , 78 , 18 ); getContentPane().add(label_2); tf_send = new JTextField(); tf_send.setBounds( 113 , 66 , 287 , 22 ); getContentPane().add(tf_send); final JLabel label_3 = new JLabel(); label_3.setText( "主 题:" ); label_3.setBounds( 32 , 92 , 66 , 18 ); getContentPane().add(label_3); tf_title = new JTextField(); tf_title.setBounds( 113 , 94 , 287 , 22 ); getContentPane().add(tf_title); final JLabel label_4 = new JLabel(); label_4.setText( "正 文:" ); label_4.setBounds( 34 , 128 , 66 , 18 ); getContentPane().add(label_4); final JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds( 113 , 128 , 287 , 91 ); getContentPane().add(scrollPane); ta_text = new JTextArea(); scrollPane.setViewportView(ta_text); final JButton btn_send = new JButton(); btn_send.addActionListener( new ActionListener() { public void actionPerformed( final ActionEvent e) { String fromAddr = tf_send.getText().trim(); String toAddr = tf_receive.getText().trim(); // 真实存在的目标邮件地址 String title = tf_title.getText().trim(); String text = ta_text.getText().trim(); try { sendMessage(fromAddr, toAddr, title, text); } catch (Exception e1) { e1.printStackTrace(); } } }); btn_send.setText( "发 送" ); btn_send.setBounds( 144 , 225 , 78 , 28 ); getContentPane().add(btn_send); final JButton btn_exit = new JButton(); btn_exit.addActionListener( new ActionListener() { public void actionPerformed( final ActionEvent e) { System.exit( 0 ); } }); btn_exit.setText( "退 出" ); btn_exit.setBounds( 279 , 225 , 78 , 28 ); getContentPane().add(btn_exit); } public void init() throws Exception { Properties props = new Properties(); // 创建属性对象 props.put( "mail.transport.protocol" , sendProtocol); // 指定邮件传输协议 props.put( "mail.smtp.class" , "com.sun.mail.smtp.SMTPTransport" ); //指定传输协议使用的类 props.put( "mail.smtp.host" , sendHost); // 定义发送邮件的主机 session = Session.getDefaultInstance(props); // 创建Session对象 } /** * @param fromAddr 发送者 * @param toAddr 接收者 * @param title 主题 * @param text 内容 * @throws Exception 异常 */ public void sendMessage(String fromAddr,String toAddr,String title,String text) throws Exception { Message msg = new MimeMessage(session); // 创建Message对象 InternetAddress[] toAddrs = InternetAddress.parse(toAddr, false ); // 创建接收方的InternetAddress对象 msg.setRecipients(Message.RecipientType.TO, toAddrs); // 指定接收方 msg.setSentDate( new Date()); // 指定接发送日期 msg.setSubject(title); // 设置主题 msg.setFrom( new InternetAddress(fromAddr)); // 指定发送者 msg.setText(text); // 指定发送内容 Transport.send(msg); // 发送邮件 JOptionPane.showMessageDialog( null , "邮件发送成功。" ); } } ============================================================================== 本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/archive/2011/10/19/2217431.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

客户案例:敏捷转型的二三事儿

在接触敏捷的这一段时间内,也听了不少曲折离奇的故事。很少有团队在转型敏捷的时候,没有系统学习或外力支持就能做的风生水起。毕竟这里面的“水”很深。 比较巧合的是,我所供职的公司目前便在做敏捷转型。不过,我们的转型过程并不是顺风顺水的。因此,在转型过程中,我们注意到的那些“事儿”,你也一定关心。 领导是在充分认识到敏捷的益处之后,决定转型敏捷的。因为敏捷所提倡的“拥抱变化”更适应公司的开发过程:尽管公司是 To B 企业,但用户参与度依旧很高,这就导致产品经理在与用户代表对接的过程中,会不断地产生产品需求更改的情况。既然是这样,那么沿用瀑布开发的模式就显得有些笨重了。 困难一:全员敏捷 决定要转型敏捷之后,如何让公司全员了解敏捷呢?第一个困难出现了。 针对这一问题,公司开始引入敏捷方法论的知识,推动全员进行敏捷方法论的学习,包括制定学习计划来督促大家的学习进度:观看敏捷相关视频、阅读敏捷书籍等。在有了一定的理论知识之后,敏捷开发的推进就稍显轻松。 顾虑到除研发部门外,其他业务部门转型敏捷的优先级并不算高,公司决定先将研发部门划为试点部门,小范围试行敏捷。所以就出现了每天早上,其他部门的同事都要去看一看研发部门有没有在开站立会议的现象。尤其是将 Scrum 流程融入到日常办公中时,这给同事们带来了一种之前从未体验过的新鲜感。这种新鲜感让其他业务部门不仅有了对敏捷一探究竟的好奇心,还开始憧憬自己部门转型敏捷之后的“愉快生活”。 显然,研发部门的敏捷转型成功了,这带给了公司上下莫大的信心。紧接着,其余的业务部门也开始了敏捷转型。实施了一段时间之后,大家发现,转型敏捷是一个非常正确的决策。在大家都沉浸在“转型成功”的欢天喜地的氛围中时,领导又拧紧了眉毛。 困难二:流于形式 领导发现,虽然各方面的形式做到位了,但公司实际并没有明显的业务价值的提高,问题出在哪里? 考虑了一下,领导选择请一位敏捷教练,让他到公司实际考察,帮助捋清到底哪里产生了问题。敏捷教练的到来让公司有了意外的收获。教练在各个业务部门之间转了几天,了解了我们的现有敏捷模式,随后指出了几点问题: 站立会议流于形式,其他人并没有认真听主讲人的工作内容及问题; 看板的应用不规范,无法得到及时更新,不能传递相应价值; 工时估算随意,无法体现任务价值等。 除此之外,敏捷教练还纠正了很多我们在工作中的小问题。在教练的帮助下,虽然大大小小的会议依旧不少,但在不断迭代的过程中,大家都很明显地发现自己的工作计划变得更加完善详实了,其间如果出现与计划不相符的结果,也能很快地找到问题所在。 可以说,我们转型没有失败的很大原因,在于我们将小范围的试点扩大到了整个公司的范围内。除自己公司之外,我也有看到过其他转型敏捷的公司,只是在某一部门中推行敏捷,尽管小范围内的敏捷转型成功了,但它也有相应的局限性,会阻碍敏捷带来的深远影响和战略价值。 除去转型的准备工作,公司也拿出了很多的时间来巩固转型的成果:比如开展各种敏捷培训,定期开展工作回顾与总结等,这些无一不在丰富我们对敏捷的认知。 直到现在,我们虽还未转型成功,但也算小有心得。公司员工的愿景一致,是否借助外部力量,还是通过管理工具进行调整,这些都还是次要。最重要的是,公司是否有转型敏捷的毅力与魄力,毕竟这是一场真正的持久战。 往期文章: 从科学管理到丰田生产模式,精益是如何产生的? 第15届敏捷状态报告:敏捷引领全球数字化转型 设计思维 VS 敏捷:两者有什么区别?

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册