Unsubscribing from mailing list for anonymous user in simplenews
I needed the same thing, so I thought I'd share my solution.

In hook_form_alter():

  // Check that this is a simplenews form and the user is anonymous
  // If so, add an Unsubscribe button with a custom submit handler before the
  // default simplenews form submit handler is called
  if (strpos($form_id, 'simplenews_block_form') !== FALSE &amp;&amp; $user-&gt;uid == 0) {
    $form['unsubscribe'] = array(
      '#type' =&gt; 'submit',
      '#value' =&gt; t('Unsubscribe'),
    );

    $form['unsubscribe']['#submit'] = $form['#submit'];
    array_unshift($form['unsubscribe']['#submit'], 'custom_simplenews_form_unsubscribe');
  }


Then the custom submit handler will be something like this:

function custom_simplenews_form_unsubscribe(&amp;$form, &amp;$form_state) {
  // Change action to unsubscribe and exit so the simplenews handler will take over
  if ($form_state['clicked_button']['#value'] == 'Unsubscribe') {
    $form_state['values']['action'] = 'unsubscribe';
    $form_state['values']['submit'] = 'Unsubscribe';
  }
}


So, when control is passed to simplenews_block_form_submit() in simplenews.subscription.inc the user will be unsubscribed using the module's workflow.